繁体   English   中英

如何获得此正则表达式以忽略带重音符号的字符?

[英]How do I get this regular expression to ignore accented characters?

我有一个文本文件,脚本正在读取该文件并从中获取最常用的单词。 但是,在执行此操作的某一时刻,在清理源文本期间,它无法处理带重音符号的字符(在这种情况下,它们是áéíóöőúúüű)。

这就是我目前所拥有的。

str = re.sub(r'\W+', ' ', str)

这只是删除重音字符。 我试过添加flags=re.U ,但是它以不同的方式弄乱了结果。 我怀疑有一种简单的方法可以解决我的问题,尽管我一直在寻找它,但是没有成功,所以我求助于您。 提前致谢。

您需要使用正确的修饰符:

str = re.sub(ur'\W+', u' ', s, flags=re.UNICODE)
                                     ^^^^^^^^^^

参见Python 2.x文档

使\\w\\W\\b\\B\\d\\D\\s\\S序列依赖于Unicode字符属性数据库。 还为IGNORECASE启用非ASCII匹配。

这是一个在线Python 2.7演示

import re
s = u"characters (in this case, they are áéíóöőúüű)."
res = re.sub(ur'\W+', u' ', s, flags=re.UNICODE).encode("utf8")
print(res) # => characters in this case they are áéíóöőúüű 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM