我正在通過websocket連接接收str數據,並嘗試刪除重音符號(以及降低文本/將''轉換爲' - '.. )Python 2.7:刪除<str>的重音 - 仍然不起作用
而且,即使有數百個問題在這裏被詢問和回答,仍然會失敗。
這裏的代碼,試圖做到這一點的一部分,解析[4] [7:]是我的文字翻譯
if parsed[4][:6]=="!strat":
shiftedtxt=''
txt=parsed[4][7:].lower().decode('unicode-escape')
hope=''.join((c for c in unicodedata.normalize('NFD', txt) if unicodedata.category(c) != 'Mn'))
for i in hope:
if i==' ':
shiftedtxt+='-'
else:
shiftedtxt+=i
ws.send(room+"|http://pokestrat.com/fiche_pokemon/"+shiftedtxt+".php")
我通常試圖「Ténéfix」到「tenefix」翻譯。
如建議在本網站上的答案,我使用的是
''.join((c for c in unicodedata.normalize('NFD', txt) if unicodedata.category(c) != 'Mn'))
方法。
當試圖一步一步:
'éô'.decode('unicode-escape')
產生
u'\xe9\xf4'
和
>>> s=u'\xe9\xf4'
>>> ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn'))
產量
u'eo'
因此,事情應該..工作?但他們沒有。 例如,'ténéfix'返回'tA©nA fix',這是我無法解釋的。 爲什麼?
編輯:這裏是全碼:http://pastebin.com/aJ1Rk1pV
這個問題可能是圍繞着'parsed [4] [7:]。lower()。decode('unicode-escape')' – njzk2 2015-01-26 20:56:51
@ njzk2 parsed [4]是一個字符串對象, 。 parsed [:6]被檢查爲!如果驗證過,那麼解析[7:]應該是一個單詞。 它被設計成讓用戶問「!straténéfix」。也許來自websockets的字符串不是字符串? – 2015-01-26 21:02:53
你沒有檢查導致問題的值的實際內容嗎? – njzk2 2015-01-26 21:04:44