用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里有没有现成的解决方案。
1 个回答
7
如果你能创建一个明确的表格,然后使用unicode.translate方法,那会更好。这样做的好处是转写会更准确,比如把“ö”转写成“oe”,把“ß”转写成“ss”,这在德语中是应该这样处理的。
在PyPI上有几个转写的工具包可以使用:translitcodec、Unidecode,还有trans。