我在 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' >>>
字符类别“ Mn”代表Nonspacing_Mark,类似于 MiniQuark 的答案中的 unicodedata.combining (我没有想到 unicodedata.combining,但它可能是更好的解决方案,因为它更明确)。
Nonspacing_Mark
请记住,这些操作可能会显着改变文本的含义。口音、变音符号等不是“装饰”。