代码之家  ›  专栏  ›  技术社区  ›  Blixt

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

  •  5
  • Blixt  · 技术社区  · 15 年前

    说我有绳子 "blöt träbÃ¥t" 其中有一些 a o 上面有乌姆劳特和戒指。我希望它变成 "blot trabat" 尽可能简单。我做了一些挖掘,发现了以下方法:

    import unicodedata
    unicode_string = unicodedata.normalize('NFKD', unicode(string))
    

    \u0308 对于umlauts。)现在要将其恢复为ASCII字符串,我可以这样做 ascii_string = unicode_string.encode('ASCII', 'ignore') 它将忽略组合字符,从而生成字符串 “涂抹特拉巴特” .

    这里的问题是:有没有更好的方法?这感觉像是一种迂回的方式,我在想可能有什么我不知道的。当然,我可以将它封装在一个helper函数中,但我更愿意检查Python中是否还没有这个函数。

    1 回复  |  直到 15 年前
        1
  •  7
  •   Martin v. Löwis    15 年前

    如果创建一个显式表,然后使用unicode.translate方法,效果会更好。这样做的好处是,音译更精确,例如将“”音译为“oe”,将“”音译为“ss”,这在德语中是应该做到的。

    PyPI上有几个音译包: translitcodec , Unidecode trans .