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

时间:2011-11-10 22:41:20

标签: python string unicode ascii

不知道这是否是微不足道的,但我需要将unicode字符串转换为ascii字符串,我不希望所有那些转义字符。我的意思是,是否有可能对一些非常相似的ascii字符进行“近似”转换?

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

非常感谢! 马可

5 个答案:

答案 0 :(得分:26)

使用Unidecode包来音译字符串。

>>> import unidecode
>>> unidecode.unidecode(u'Gavin O’Connor')
"Gavin O'Connor"

答案 1 :(得分:8)

b = str(a.encode('utf-8').decode('ascii', 'ignore'))

应该可以正常工作。

答案 2 :(得分:3)

import unicodedata

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

<强>输出:

Gavin O'Connor

以下是描述规范化表单的文档:http://unicode.org/reports/tr15/

答案 3 :(得分:1)

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

答案 4 :(得分:0)

尝试简单的字符替换

str1 = "“I am the greatest”, said Gavin O’Connor"
print(str1)
print(str1.replace("’", "'").replace("“","\"").replace("”","\""))

PS:如果获得error

,请在# -*- coding: utf-8 -*-文件的顶部添加.py