1. 程式人生 > >python去掉 unicode 字串前面的 u

python去掉 unicode 字串前面的 u

有時我們會碰到類似下面這樣的 unicode 字串:

u'\xe4\xbd\xa0\xe5\xa5\xbd'

這明顯不是一個正確的 unicode 字串,可能是在哪個地方轉碼轉錯了。

我們要想得到正確的 unicode 字串首先就必須先將這個字串轉成非 unicode 字串, 然後再進行解碼。按照普通的辦法進行 encode 肯定是不行的,因為這不是一個正確的 unicode 字串:

In [1]: u'\xe4\xbd\xa0\xe5\xa5\xbd'.encode('utf8')
Out[1]: '\xc3\xa4\xc2\xbd\xc2\xa0\xc3\xa5\xc2\xa5\xc2\xbd'
In [2]: print u'\xe4\xbd\xa0\xe5\xa5\xbd'.encode('utf8') 盲陸聽氓樓陸 那如何才能得到我們想要的 \xe4\xbd\xa0\xe5\xa5\xbd 呢? python 提供了一個特殊的編碼( raw_unicode_escape )用來處理這種情況: In [4]: u'\xe4\xbd\xa0\xe5\xa5\xbd'.encode('raw_unicode_escape') Out[4]: '\xe4\xbd\xa0\xe5\xa5\xbd' In [5]: u'\xe4\xbd\xa0\xe5\xa5\xbd'.encode('raw_unicode_escape'
).decode('utf8') Out[5]: u'\u4f60\u597d' In [7]: print u'\u4f60\u597d' 你好