我在使用字符编码方面存在一些问题,在这种特殊情况下使用波兰语字符。
我需要用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
但现在ó
和é
都被编码为o
和e
。
我怎样才能做到这一点?
答案 0 :(得分:3)
如果您想转到1252
,那就是您应该告诉encode
和decode
:
>>> 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é'