在PythonUnicode字符串中删除重音的最佳方法是什么?我在Python中有一个Unicode字符串,我想删除所有的重音(Diacritics)。我在Web上发现了一种用Java实现这一目标的优雅方法:将Unicode字符串转换为它的长规范化形式(字母和数字符号有一个单独的字符)删除Unicode类型为“diacritic”的所有字符。我需要安装像pyICU这样的库吗?或者仅仅用python标准库就可以了吗?那蟒蛇3呢?重要注意事项:我想避免代码从重音字符到非重音字符之间的显式映射。
3 回答
米琪卡哇伊
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
慕仙森
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
提交
取消
