假设我有字符串 "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 .
关于python - 使用 Python 将国际字符替换为基本拉丁字符的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1192367/