2012-04-22 143 views
48

可能重复:
How do I treat an ASCII string as unicode and unescape the escaped characters in it in python?
How do convert unicode escape sequences to unicode characters in a python stringPython字符串为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)是不是答案。那么是什么?

+1

该标签是这么说的,但要更清楚地指出,这个问题的重点是python 2.x,而不是3.x. – Adam 2017-06-16 23:22:29

回答

68

Unicode转义仅在Unicode字符串的工作,所以这

a="\u2026" 

实际上是6个字符的字符串: '\', 'U', '2', '0', '2',' 6' 。

为了统一了这一点,使用decode('unicode-escape')

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

## '\\u2026' 
## u'\u2026' 
24

解码它与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()方式是更好的。

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