![](/img/trans.png)
[英]How do I get a regular expression to recognize non-ASCII characters as letters?
[英]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.