Python 解码字符串问题

1 投票
3 回答
2806 浏览
提问于 2025-04-17 05:35

我从数据库里得到了以下字符串:

'23:45 \xe2\x80\x93 23:59'  

而输出应该看起来像这样:

'23:45 - 23:59'  

我该怎么解码这个呢?我试过用utf-8解码,但没成功。

>>> x.decode("utf-8")
u'23:45 \u2013 23:59'

谢谢你

3 个回答

1
a="NOV–DEC 2011" (en-dash)
b=unidecode(a)

#output --> NOV-DEC 2011 (with hyphen)

你需要先安装 unidecode 这个库,然后再把它导入到你的代码里。我试过了,运行得很好。希望这对你有帮助!

1

一个“en dash”(短破折号)的UTF-8表示是十六进制的0xE2 0x80 0x93(也就是e28093),或者用u"\u2013"来表示。听起来你想把这个短破折号替换成ASCII的连字符(减号,0x2d),然后把它存储在一个变量里。这是可以的,但要注意,这样变量里存的字符和数据库里存的字符就不一样了,就像把一个Ü(http://www.fileformat.info/info/unicode/char/dc/index.htm)替换成ASCII的U,或者把数字0(0x30)替换成大写的O(0x4f)一样。

7

这完全正确。交互式的Python解释器显示的是字符串的repr()形式。如果你想看到它作为一个正常的字符串,就用print来输出它:

>>> print '23:45 \xe2\x80\x93 23:59'
23:45 – 23:59

撰写回答