python - 删除重音和特殊字符

标签 python diacritics

<分区>

Possible Duplicate:
What is the best way to remove accents in a python unicode string?
Python and character normalization

我想删除重音符号,将所有字符变为小写,并删除任何数字和特殊字符。

示例:

Frédér8ic@ --> 弗雷德里克

提案:

def remove_accents(data):
    return ''.join(x for x in unicodedata.normalize('NFKD', data) if \
    unicodedata.category(x)[0] == 'L').lower()

有没有更好的方法来做到这一点?

最佳答案

一个可能的解决方案是

def remove_accents(data):
    return ''.join(x for x in unicodedata.normalize('NFKD', data) if x in string.printable).lower()

使用 NFKD AFAIK 是标准化 unicode 以将其转换为兼容字符的标准方法。剩下的就是删除源自规范化的特殊字符数字和 unicode 字符,您可以简单地与 string.ascii_letters 进行比较并删除不在该集合中的任何字符。

关于python - 删除重音和特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8694815/

相关文章:

Python 将 'st' 替换为 'street' 但保留街道名称不变

python - 在 Scapy 的 "sniff"函数中使用多个过滤器

string - 如何在 Erlang 中将重音字符串转换为常规字符串?

java - 无法检索 urlencoded 变音符号。 [解决方案: use UTF8]

python - 偏微分方程中的时空参数 - 使用 Python 中的线法求解

python - 如何使用反斜杠 x\x 代码解码 ascii 字符串

python - 如何验证您在 Azure 上是否有足够的资源

r - 在 R 中将重音符号转换为 ASCII

WCF 和自定义文本编码 - 乱七八糟的业务

java - 奇怪的 xml/html 重音问题