Python和字符规范化

时间:2010-11-12 07:52:03

标签: python django utf-8 diacritics transliteration

您好 我从外国来源检索基于文本的utf8数据,其中包含u"ıöüç"等特殊字符,而我想将它们标准化为英语,例如"ıöüç" - > "iouc"。实现这一目标的最佳方法是什么?

4 个答案:

答案 0 :(得分:36)

我建议使用Unidecode module

>>> from unidecode import unidecode
>>> unidecode(u'ıöüç')
'iouc'

请注意如何为其提供unicode字符串,并输出一个字节字符串。输出保证为ASCII。

答案 1 :(得分:5)

这一切都取决于你想要在多大程度上音译结果。如果您想将所有内容一直转换为ASCII(αβγabg),那么unidecode就是您的选择。

如果您只是想从重音字母中删除重音,那么您可以尝试使用标准化形式NFKD分解您的字符串(这会将重音字母á转换为普通字母a,然后是{{1 })然后丢弃重音符号(属于Unicode character class U+0301 COMBINING ACUTE ACCENT - “标记,非间距”)。

Mn

答案 2 :(得分:1)

我找到的最简单的方法:

unicodedata.normalize('NFKD', s).encode("ascii", "ignore")

答案 3 :(得分:0)

import unicodedata
unicodedata.normalize()

http://docs.python.org/library/unicodedata.html