在python中将unicode字符串近似转换为ascii字符串

Mar*_*ini 21 python string unicode ascii

不知道这是否是微不足道的,但我需要将一个unicode字符串转换为ascii字符串,我不想让所有那些逃避字符.我的意思是,是否有可能对一些非常相似的ascii字符进行"近似"转换?

例如:Gavin O'Connor被转换为Gavin O\x92Connor,但我真的希望它被转换为Gavin O'Connor.这可能吗?有没有人写一些工具来做,或者我是否必须手动更换所有的字符?

非常感谢你!马尔科

Pet*_*rin 28

使用Unidecode包来音译字符串.

>>> import unidecode
>>> unidecode.unidecode(u'Gavin O’Connor')
"Gavin O'Connor"
Run Code Online (Sandbox Code Playgroud)


Aco*_*orn 10

import unicodedata

unicode_string = u"Gavin O’Connor"
print unicodedata.normalize('NFKD', unicode_string).encode('ascii','ignore')
Run Code Online (Sandbox Code Playgroud)

输出:

加文·奥康纳

这是描述规范化形式的文档:http : //unicode.org/reports/tr15/


D K*_*D K 8

b = str(a.encode('utf-8').decode('ascii', 'ignore'))
Run Code Online (Sandbox Code Playgroud)

应该工作正常.


Mar*_*nen 2

有一种技术可以去除字符中的重音符号,但其他字符需要直接替换。查看这篇文章: http: //effbot.org/zone/unicode-convert.htm