54

可能重复:
如何将 ASCII 字符串视为 unicode 并在 python 中对其中的转义字符进行转义?
如何将 unicode 转义序列转换为 python 字符串中的 unicode 字符

我有一个包含 unicode 字符的字符串,例如\u2026等。不知何故,我没有收到它unicode,而是收到了str. 如何将其转换回 unicode?

>>> a="Hello\u2026"
>>> b=u"Hello\u2026"
>>> print a
Hello\u2026
>>> print b
Hello…
>>> print unicode(a)
Hello\u2026
>>> 

所以显然unicode(a)不是答案。那是什么?

4

3 回答 3

78

Unicode 转义仅适用于 Unicode 字符串,所以这

 a="\u2026"

实际上是一个由 6 个字符组成的字符串:'\'、'u'、'2'、'0'、'2'、'6'。

要从中制作 unicode,请使用decode('unicode-escape')

a="\u2026"
print repr(a)
print repr(a.decode('unicode-escape'))

## '\\u2026'
## u'\u2026'
于 2012-04-22T13:59:40.150 回答
28

使用编解码器对其进行unicode-escape解码:

>>> a="Hello\u2026"
>>> a.decode('unicode-escape')
u'Hello\u2026'
>>> print _
Hello…

这是因为对于非 unicode 字符串,\u2026无法识别,而是将其视为文字序列字符(更清楚地说,'Hello\\u2026')。您需要对转义进行解码,而unicode-escape编解码器可以为您做到这一点。

请注意,您可以unicode通过指定编解码器参数以相同的方式识别它:

>>> unicode(a, 'unicode-escape')
u'Hello\u2026'

a.decode()方式更好。

于 2012-04-22T13:59:53.707 回答
17
>>> a="Hello\u2026"
>>> print a.decode('unicode-escape')
Hello…
于 2012-04-22T14:00:00.530 回答