2014-09-19 71 views
0

替換'u2019'我試過很多方法將它編碼到最終結果"BACK RUSHIN'",最重要的字符是右撇號'Python中的字符編碼,用'

我想通過使用一些內置函數來獲得最終結果的方法Python在普通字符串和unicode字符串之間沒有區別。

這是我使用檢索字符串代碼:str(unicode(etree.tostring(root.xpath('path')[0],method='text', encoding='utf-8'),errors='ignore')).strip()

並將結果:'BACK RUSHIN'的東西是撇號'丟失。

另一種方法是:root.xpath('path/text()')

而這結果是:Python中u'BACK RUSHIN\u2019'

最後,如果我嘗試:u'BACK RUSHIN\u2019'.encode('ascii', 'replace')

結果是:'BACK RUSHIN?'

請無可代替的功能,我想利用蟒蛇編解碼器庫。 也不打印字符串,因爲它被保存在一個變量中。

感謝

+0

所以,你要讀作」從XML'(右單引號),但它翻譯爲'''(單引號)? – 2014-09-19 01:31:44

+1

這不是一個編解碼器問題。正如羅布所暗示的那樣,這是兩個完全不同的角色。將一個人變成另一個人是一個替代問題,而不是編碼問題。 (誤導性地命名)'unidecode'模塊只不過是從非ASCII字符到類似於相似的ASCII字符集的替換集合,對於當您必須與不能執行Unicode的系統進行接口時的絕望情況。否則,通過這種方式來修改字符串通常是個壞主意。 – bobince 2014-09-19 04:50:13

回答

6
>>> import unidecode 
>>> unidecode.unidecode(u'BACK RUSHIN\u2019') 
"BACK RUSHIN'" 

unidecode

+6

可能值得一提,你必須安裝'unidecode'。 – 2014-09-19 01:53:25