2012-04-22 145 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…