在Python中替换Unicode字符串中的非ASCII字符
我想知道怎么在Python中把Unicode字符串里的非ASCII字符替换掉。
对于给定的输入,我希望得到这样的输出:
música -> musica
cartón -> carton
caño -> cano
也许可以用一个字典来实现,比如把'á'作为键,把'a'作为值?
2 个回答
7
现在,补充一下这个回答:可能你的数据不是以unicode格式来的(也就是说,你在读取一个用其他编码的文件,而不能在字符串前加个“u”)。这里有一段代码,可能也能解决这个问题(主要是针对那些读取英文文件的人)。
import unicodedata
unicodedata.normalize('NFKD',unicode(someString,"ISO-8859-1")).encode("ascii","ignore")
21
如果你只想把带重音的字符转换成没有重音的字符,可以使用以下代码:
>>> import unicodedata
>>> unicodedata.normalize('NFKD', u"m\u00fasica").encode('ascii', 'ignore')
'musica'