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

时间:2009-07-28 07:21:12

标签: python string internationalization

假设我的字符串"blöt träbåt"有一些ao,其中包含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中。

1 个答案:

答案 0 :(得分:7)

如果您创建了一个显式表,然后使用unicode.translate方法会更好。优点是音译更精确,例如,音译。将“ö”音译为“oe”,将“ß”音译为“ss”,应该用德语进行。

PyPI上有几个音译包:translitcodecUnidecodetrans