如何在Python中解码带有Unicode(如\u00e7)的文本?

5

你好,我从库中接收到文本,在打印接收到的文本时,我看到一些非英文字符,如"\u00e7",实际上应该是 "ç"。我猜想需要对文本进行编码和解码,但我是 Python 的新手,不确定是否是正确的方法。请问你能指点一下吗?


你使用的是哪个版本的Python? - superjump
Python 2.7.5 我觉得它是最新最好的版本。 - smart-dev.org
1
最新版本是Python 3.3.3。这很重要,因为处理Unicode字符串从2.x到3.x发生了变化。 - Cilyan
你能展示给我们你所得到的文本,以及你所见到的形式吗? - user2357112
1个回答

5

使用 unicode_escape 编码解码字符串:

>>> s = r'\u00e7'
>>> print s
\u00e7
>>> print s.decode('unicode-escape')
ç
>>> 

如果 sys.stdout.encodingascii,那么使用 print 会引发 UnicodeEncodeError 错误;在这种情况下,需要显式地进行编码:

>>> print s.decode('unicode-escape').encode('utf-8')
ç

1
这可能是正确的答案,但是根据目前 OP 给出的信息量,无法确定。我怀疑它是错误的;我的猜测是 OP 已经有了 Unicode 对象,或者他需要将其解码为 JSON。很少有来源以 Python Unicode 字符串文字的形式提供数据,这就是 unicode-escape 处理的内容。 - user2357112
非常感谢,这可能是正确的答案,但我仍然缺少一些东西。 我在打印行而不是解码行上遇到了此错误。UnicodeEncodeError:'ascii'编解码器无法对位置135中的字符u'\u0131'进行编码:超出范围(128) - smart-dev.org
@smart-dev.org:听起来你已经有一个Unicode字符串了。当你尝试重新解码一个包含非ASCII字符的Unicode字符串时,就会得到这个错误消息。 - user2357112
@smart-dev.org,请尝试使用s.decode('unicode-escape').encode('utf-8') - falsetru
@smart-dev.org,顺便问一下,这个字符串是从哪里来的?你用的是什么库? - falsetru
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接