2015-01-02 29 views
1

我有一個unicode字符串κανω,但由於某些其他軟件的某些預處理我無法更改,因此它變成了字符串'\u03ba\u03b1\u03bd\u03c9'而不是u'\u03ba\u03b1\u03bd\u03c9'如何從unicode字節表示中檢索我的unicode

如何將'\u03ba\u03b1\u03bd\u03c9'更改回u'\u03ba\u03b1\u03bd\u03c9'

我已經試過:

>>> x = '\u03ba\u03b1\u03bd\u03c9' 
>>> print x 
\u03ba\u03b1\u03bd\u03c9 
>>> print x.decode('utf8') 
\u03ba\u03b1\u03bd\u03c9 
>>> print x.encode('utf8') 
\u03ba\u03b1\u03bd\u03c9 
>>> print unicode(x) 
\u03ba\u03b1\u03bd\u03c9 

我不可能去每個字符串輸出並添加u'...',即我需要避免這樣做:

>>> x = u'\u03ba\u03b1\u03bd\u03c9' 
>>> print x 
κανω 
+1

有很多字符串格式包含'\ u'轉義符,如果你使用的解碼器與編碼器不匹配(例如,如果你使用特定於Python的'unicode-escape'解碼JSON字符串),那麼你很可能最終會出現某些角落案例的結果。建議您瞭解有關格式的更多細節...例如,它如何輸出反斜槓,換行符,零字節或0080-00FF範圍內的字符? – bobince

回答

4

你需要'unicode_escape'(生產一個適合於Python源代碼中Unicode字符串的字符串)作爲其編碼:

>>> s='\u03ba\u03b1\u03bd\u03c9' 
>>> print unicode(s,'unicode_escape') 
κανω 
+0

可愛!謝謝!!! – alvas

+0

大聲笑,它需要2分鐘才能接受,現在是我允許=) – alvas

+0

@alvas,...... :) – Kasramvd

相關問題