Python波兰语字符编码问题

时间:2014-12-04 15:23:28

标签: python character-encoding

我在使用字符编码方面存在一些问题,在这种特殊情况下使用波兰语字符。

我需要用windows-1252等效替换所有无窗口的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

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

如果您想转到1252,那就是您应该告诉encodedecode

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

答案 1 :(得分: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é'