用Python用基本拉丁字母替换国际字符的好方法是什么?


问题内容

说我有串"blöt träbåt"具有几个ao与元音和环以上。我希望它变得"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上有几种音译包:translitcodecUnidecodetrans