繁体   English   中英

非ASCII字符的正则表达式

[英]Regexp for non-ASCII characters

在Python 3中使用正则表达式考虑此代码段:

>>> t = "Meu cão é #paraplégico$."
>>> re.sub("[^A-Za-z0-9 ]","",t,flags=re.UNICODE)
'Meu co  paraplgico'

为什么删除非ASCII字符? 我试过没有国旗,都一样。

另外,任何人都可以在Python 2.7上进行这项工作吗?

您正在用空格( "" )替换非字母数字字符( [^A-Za-z0-9 ] )。 非ASCII字符不在AZ,az或0-9之间,因此可以替换它们。

您可以像这样匹配所有单词字符:

>>> t = "Meu cão é #paraplégico$."
>>> re.sub("[^\w ]","",t, flags=re.UNICODE)
>>> 'Meu cão é paraplégico'

或者,您可以像这样将字符添加到正则表达式中: [^A-Za-z0-9ãé ]

[In 1]: import regex
[In 2]: t = u"Meu cão é #paraplégico$."
[In 3]: regex.sub(r"[^\p{Alpha} ]","",t,flags=regex.UNICODE)
[In 4]: print(regex.sub(r"[^\p{Alpha} ]","",t,flags=regex.UNICODE))

Mécãoéparaplégico

我通过切换到regex库(从PyPI)解决了这一问题。

然后regex命令变成:

regex.sub(ur"[^\p{L}\p{N} ]+", u"", t)

暂无
暂无

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

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