我正在寻找简单的Python函数,它接受一个字符串并返回一个类似的字符串,但所有非ascii字符都转换为它们最接近的ascii等价物。 例如,应该删除变音符号等。 我想象必须有一个非常规范的方法来做这个并且有很多相关的stackoverflow问题,但我找不到一个简单的答案所以它似乎值得一个单独的问题。
输入/输出示例:
"Étienne" -> "Etienne"
答案 0 :(得分:4)
答案 1 :(得分:2)
在Python 3中使用PyPI的正则表达式实现:
http://pypi.python.org/pypi/regex
从字符串开始:
>>> s = "Étienne"
归一化为NFKD然后去除变音符号:
>>> import unicodedata
>>> import regex
>>> regex.sub(r"\p{Mn}", "", unicodedata.normalize("NFKD", s))
'Etienne'
答案 2 :(得分:1)
搜索'iconv TRANSLIT python'我发现: http://www.tablix.org/~avian/blog/archives/2009/01/unicode_transliteration_in_python/看起来可能就是你所需要的。这些评论还有其他一些使用标准库的想法。
还有http://web.archive.org/web/20070807224749/http://techxplorer.com/2006/07/18/converting-unicode-to-ascii-using-python/使用NFKD来获取可能的基本字符。
答案 3 :(得分:1)
阅读一些重复问题的答案。 NFKD噱头仅作为重点剥离器。它不处理连字和许多其他不能(或没有)分解的基于拉丁语的字符。为此,准备好的翻译表是必要的(并且要快得多)。