繁体   English   中英

替换非字母数字字符,除了一些例外python

[英]Replace non alphanumeric characters except some exceptions python

在perl s/[^\\w:]//g将替换所有非字母数字字符除外:

在python我使用re.sub(r'\\W+', '',mystring)确实删除除_下划线以外的所有非字母数字。 有没有办法放异常,我希望不要替换像=和。

以前我正在应用另一种方法,即使用re.sub('[!@#\\'\\"替换所有不需要的字符re.sub('[!@#\\'\\" $()]','',mystring`)但是,我不可能预测到什么所有字符都可能出现在mystring中,因此除了少数字符之外,我希望删除所有非字母数字字符。

谷歌没有提供适当的答案。 最接近的搜索是python正则表达式拆分任何\\ W +有一些例外,但这也没有帮助我。

您可以在否定的字符组中指定您不需要删除的所有内容。

re.sub(r'[^\w'+removelist+']', '',mystring)

测试

>>> import re
>>> removelist = "=."
>>> mystring = "asdf1234=.!@#$"
>>> re.sub(r'[^\w'+removelist+']', '',mystring)
'asdf1234=.'

这里的removelist变量是一个字符串,其中包含您需要从删除中排除的所有字符的列表。

否定的字符类意味着什么

^被移动到字符类中时,它不会充当锚点,因为它会否定字符类。

那就是^在一个字符类里面说像[^abc]它否定了字符类的含义。

例如[abc]将匹配a bc其中如[^abc]将不匹配a bc 这也可以表述为以外的任何a bc

re.sub(r'[^a-zA-Z0-9=]', '',mystring)

您可以添加任何你想要的喜欢_无论你想保存。

我相信你在perl中描述的方法也可以在python中使用,例如:

re.sub(r'[^\w=]', '',mystring)

会删除除word-characters和=之外的所有内容

暂无
暂无

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

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