在PythonUnicode字符串中删除重音的最佳方法是什么?我在Python中有一个Unicode字符串,我想删除所有的重音(Diacritics)。我在Web上发现了一种用Java实现这一目标的优雅方法:将Unicode字符串转换为它的长规范化形式(字母和数字符号有一个单独的字符)删除Unicode类型为“diacritic”的所有字符。我需要安装像pyICU这样的库吗?或者仅仅用python标准库就可以了吗?那蟒蛇3呢?重要注意事项:我想避免代码从重音字符到非重音字符之间的显式映射。
3 回答
![?](http://img1.sycdn.imooc.com/54585050000156a302200220-100-100.jpg)
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
import unicodedatadef strip_accents(s): return ''.join(c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn')
>>> strip_accents(u"A \u00c0 \u0394 \u038E")u'A A \u0394 \u03a5'>>>
Nonspacing_Mark
![?](http://img1.sycdn.imooc.com/533e4d510001c2ad02000200-100-100.jpg)
慕仙森
TA贡献1827条经验 获得超8个赞
import unicodedatadef remove_accents(input_str): nfkd_form = unicodedata.normalize('NFKD', input_str) only_ascii = nfkd_form.encode('ASCII', 'ignore') return only_ascii
编辑
import unicodedatadef remove_accents(input_str): nfkd_form = unicodedata.normalize('NFKD', input_str) return u"".join([c for c in nfkd_form if not unicodedata.combining(c)])
unicodedata.combining(c)
c
编辑2: remove_accents
encoding = "utf-8" # or iso-8859-15, or cp1252, or whatever encoding you usebyte_string = b"café" # or simply "café" before python 3.unicode_string = byte_string.decode(encoding)
添加回答
举报
0/150
提交
取消