用Python用基本拉丁字母替换国际字符的好方法是什么?
问题内容:
说我有串"blöt träbåt"
具有几个a
和o
与元音和环以上。我希望它变得"blot trabat"
尽可能简单。我做了一些挖掘,发现以下方法:
import unicodedata
unicode_string = unicodedata.normalize('NFKD', unicode(string))
这将使我获得unicode格式的字符串,并将国际字符分为基本字母和组合字符(\u0308
用于变音符号)。现在,将其恢复为我可以做的ASCII字符串ascii_string = unicode_string.encode('ASCII', 'ignore')
,它将忽略组合字符,从而导致字符串"blot trabat"
。
这里的问题是:有更好的方法吗?感觉就像是一个回旋处,我一直在想可能有些我不知道的事情。我当然可以将它包装在一个辅助函数中,但是我宁愿检查一下它是否在Python中还不存在。
问题答案:
如果创建一个显式表,然后使用unicode.translate方法会更好。这样做的好处是音译更加精确,例如,用德语将“ö”译为“ oe”,将“ß”译为“
ss”。
PyPI上有几种音译包:translitcodec,Unidecode和trans。