Python 替换非字母数字字符,某些例外情况除外

Python 替换非字母数字字符,某些例外情况除外,python,regex,alphanumeric,Python,Regex,Alphanumeric,在perl中,除了: 在python中,我使用的是re.sub(r'\W+','',mystring) 它会删除除下划线以外的所有非字母数字。 有没有什么方法可以设置例外,我不希望替换像=和这样的符号 以前,我应用了另一种方法,即使用re.sub(“[!@\\\\”$()]”、“,”,mystring`)替换所有不需要的字符 然而,我不可能预测mystring中的所有字符,因此我希望删除除少数字符以外的所有非字母数字字符 谷歌没有提供合适的答案。最接近的搜索是,但这对我也没有帮助。我相信你在pe

在perl中,除了:

在python中,我使用的是
re.sub(r'\W+','',mystring)
它会删除除下划线以外的所有非字母数字。 有没有什么方法可以设置例外,我不希望替换像=和这样的符号

以前,我应用了另一种方法,即使用
re.sub(“[!@\\\\”
$()]”、“,”,mystring`)替换所有不需要的字符 然而,我不可能预测mystring中的所有字符,因此我希望删除除少数字符以外的所有非字母数字字符


谷歌没有提供合适的答案。最接近的搜索是,但这对我也没有帮助。

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

re.sub(r'[^\w=]', '',mystring)
将删除除单词和字符以外的所有内容=

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

您可以添加任何您想要添加的内容,如
任何您想要保存的内容。

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

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

>>> import re
>>> removelist = "=."
>>> mystring = "asdf1234=.!@#$"
>>> re.sub(r'[^\w'+removelist+']', '',mystring)
'asdf1234=.'
这里的
removelist
变量是一个字符串,其中包含需要从删除中排除的所有字符的列表

否定字符类是什么意思

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

也就是说,
^
在字符类内部,比如说
[^abc]
它否定了字符类的含义


例如,
[abc]
将匹配
a
b
c
,其中as
[^abc]
将不匹配
a
b
c
也可以用
a
b
c
以外的任何措辞。谢谢@nu11p01n73R。我没有在里面添加删除列表,[]。我给出了类似“^w.=”的东西,但它不起作用。您能告诉我r和“^”的含义吗?“^”通常用作“开始于”,但在这里它似乎有不同的含义。@user1977867是的,当字符类中的
^
说like
[^abc]
它否定字符类的含义。也就是说,
[abc]
将匹配
a
b
c
,其中as
[^abc]
a
b
c
不匹配。这不是
a
b
c
我能问一下你为什么要调用removelist“remove”list吗?在我看来,这是一个你想要保留的字符列表。我之所以提到它,是因为它把我弄糊涂了。@ikku100 Ohh,我已经提到过我了t在这里的答案中,removelist变量是一个字符串,其中包含需要从删除中排除的所有字符的列表。