Skip to main content
 首页 » 编程设计

python之如何让这个正则表达式忽略重音字符

2024年08月20日34Terrylee

我有一个文本文件,我的脚本正在读取该文件并从中获取最常用的单词。但是,在清理源文本的过程中,有一次它无法处理重音字符(在这种情况下,它们是 áéíóöőúüű)。

这就是我目前所拥有的。

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

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

请您参考如下方法:

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

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

参见 Python 2.x docs :

Make the \w, \W, \b, \B, \d, \D, \s and \S sequences dependent on the Unicode character properties database. Also enables non-ASCII matching for IGNORECASE.

这是在线 Python 2.7 demo :

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 áéíóöőúüű