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

标签 python string internationalization

假设我有字符串 "blöt träbåt",其中有一些 ao,上面带有变音符号和环。我希望它尽可能简单地成为 "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/

相关文章:

python - 虚拟环境安装django后,仍然无法导入模块

python - 按包含 str 过滤 Pandas 数据帧行

c# - 如何从 Designer.cs 文件访问内部静态字符串?

c - 如何区分 malloced 字符串和字符串文字?

python - Django:暂时将所有 URL 重定向到一个 View

Python:模拟对象属性的side_effect

Java、unicode 和字体

language-agnostic - 是否建议在URL中使用非ASCII字符?

windows - 什么是最普遍/最常见的南美西类牙文化

python - 我如何在 Python 中进行 url 编码?