假设我的字符串"blöt träbåt"
有一些a
和o
,其中包含umlaut和ring。我希望它尽可能简单地成为"blot trabat"
。我做了一些挖掘,发现了以下方法:
import unicodedata
unicode_string = unicodedata.normalize('NFKD', unicode(string))
这将为我提供unicode格式的字符串,国际字符分为基本字母和组合字符(\u0308
用于变音符号。)现在要将其恢复为ASCII字符串,我可以ascii_string = unicode_string.encode('ASCII', 'ignore')
它只会忽略组合字符,从而产生字符串"blot trabat"
。
这里的问题是:有更好的方法吗?感觉就像一个迂回的方式,我在想可能有一些我不知道的事情。我当然可以将它包装在辅助函数中,但我宁愿检查它是否已经存在于Python中。
答案 0 :(得分:7)
如果您创建了一个显式表,然后使用unicode.translate方法会更好。优点是音译更精确,例如,音译。将“ö”音译为“oe”,将“ß”音译为“ss”,应该用德语进行。
PyPI上有几个音译包:translitcodec,Unidecode和trans。