在Python中替换Unicode字符串中的非ASCII字符

12 投票
2 回答
8616 浏览
提问于 2025-04-16 04:06

我想知道怎么在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'

撰写回答