2014-12-04 82 views
2

我遇到了字符編碼方面的一些問題,並且在波蘭字符的這種特殊情況下。Python波蘭字符編碼問題

我需要用windows-1252等價物替換所有的非windows-1252字符。我有這個工作,直到我需要使用波蘭人的角色。我該如何替換這些字符?

例如é是一個windows-1252字符,必須保持這種方式。但ł不是一個Windows-1252字符,必須用其等價物替換(或剝離,如果它沒有等效)。

我嘗試這樣做:

import unicodedata 

text = "Racławicka Rógé" 
tmp = unicodedata.normalize('NFKD', text).encode('ascii', 'ignore') 
print(tmp.decode("utf-8")) 

此打印:

Racawicka Roge 

但現在óé都編碼成oe

我該如何解決這個問題?

回答

3

如果你想要移動到1252,這就是你應該告訴什麼encodedecode

>>> text = "Racławicka Rógé" 
>>> text.encode('1252', 'ignore').decode('1252') 
'Racawicka Rógé' 
+0

我在想什麼......非常感謝!這正是我所需要的!想想很難! – Timo002 2014-12-04 15:35:54

0

如果沒有大的文本處理,就像你的榜樣,你可以利用Unidecode庫與解決方案由jonrsharpe提供。

from unidecode import unidecode 

text = u'Racławicka Rógé' 
result = '' 

for i in text: 
    try: 
     result += i.encode('1252').decode('1252') 
    except (UnicodeEncodeError, UnicodeDecodeError): 
     result += unidecode(i) 

print result # which will be 'Raclawicka Rógé'