removing accent and special characters
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is the best way to remove accents in a python unicode string?
Python and character normalization
我想删除重音符号,将所有字符都转换为小写,并删除任何数字和特殊字符。
例子:
弗雷德里克
建议:
1 2 3 | def remove_accents(data): return ''.join(x for x in unicodedata.normalize('NFKD', data) if \ unicodedata.category(x)[0] == 'L').lower() |
有没有更好的办法?
可能的解决办法是
1 2 | def remove_accents(data): return ''.join(x for x in unicodedata.normalize('NFKD', data) if x in string.printable).lower() |
使用nfkd afaik是规范化Unicode以将其转换为兼容字符的标准方法。剩下的部分,为了删除源自规范化的特殊字符数和Unicode字符,您可以简单地与
可以将字符串转换为HTML实体吗?如果是这样,那么可以使用简单的正则表达式。
下面的替换将在php/pcre中工作(请参阅我的其他答案以获取示例):
1 | '~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i' => '$1' |
然后简单地从HTML实体转换回并删除任何非
抱歉,我对Python的了解不够,无法提供Python式的答案。