python去掉 unicode 字串前面的 u
阿新 • • 發佈:2019-01-05
有時我們會碰到類似下面這樣的 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'
你好