我在Python中有一个Unicode字符串,我想删除所有的重音符号(变音符号).
我在网上找到了一种优雅的方法(Java):
- 将Unicode字符串转换为其100(字母和变音符号使用单独的字符)
- 删除所有Unicode类型为"diacritic"的字符.
我是否需要安装pyICU之类的库,或者只安装Python标准库就可以了?那么python 3呢?
重要提示:我希望避免使用从重音字符到非重音字符的显式映射的代码.
我在Python中有一个Unicode字符串,我想删除所有的重音符号(变音符号).
我在网上找到了一种优雅的方法(Java):
我是否需要安装pyICU之类的库,或者只安装Python标准库就可以了?那么python 3呢?
重要提示:我希望避免使用从重音字符到非重音字符的显式映射的代码.
这个怎么样:
import unicodedata
def 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'
>>>
character category"Mn"代表Nonspacing_Mark
,与unicodedata类似.在MiniQuark的答案中组合(我没有想到unicodedata.combing,但它可能是更好的解决方案,因为它更明确).
请记住,这些操作可能会显著改变文本的含义.口音、乌姆劳语等不是"装饰".