替换非字母数字字符,某些例外情况除外 python
Replace non alphanumeric characters except some exceptions python
在 perl 中 s/[^\w:]//g
将替换所有非字母数字字符 除了 :
在 python 我正在使用 re.sub(r'\W+', '',mystring)
它确实删除了除 _ 下划线之外的所有非字母数字。
有什么办法可以放置例外,我不希望替换 = 和 .
等符号
之前我采用了另一种方法,即使用re.sub('[!@#\'\"
$()]', '',mystring`) 替换所有不需要的字符
但是,我无法预测所有字符都可能出现在 mystring 中,因此我希望删除除少数以外的所有非字母数字字符。
Google 没有提供合适的答案。最近的搜索是 python regex split any \W+ with some exceptions,但这对我也没有帮助。
我相信您在 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
变量是一个字符串,其中包含您需要从删除中排除的所有字符的列表。
否定字符class是什么意思
当 ^
移入字符 class 时,它不会充当锚点,因为它会否定字符 class。
也就是^
里面的一个字class,说成[^abc]
就否定了字class的意思。
例如 [abc]
将匹配 a
b
或 c
而 [^abc]
将不匹配 a
b
或 c
。也可以表述为 除 a
b
或 c
之外的任何内容
在 perl 中 s/[^\w:]//g
将替换所有非字母数字字符 除了 :
在 python 我正在使用 re.sub(r'\W+', '',mystring)
它确实删除了除 _ 下划线之外的所有非字母数字。
有什么办法可以放置例外,我不希望替换 = 和 .
之前我采用了另一种方法,即使用re.sub('[!@#\'\"
$()]', '',mystring`) 替换所有不需要的字符
但是,我无法预测所有字符都可能出现在 mystring 中,因此我希望删除除少数以外的所有非字母数字字符。
Google 没有提供合适的答案。最近的搜索是 python regex split any \W+ with some exceptions,但这对我也没有帮助。
我相信您在 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
变量是一个字符串,其中包含您需要从删除中排除的所有字符的列表。
否定字符class是什么意思
当 ^
移入字符 class 时,它不会充当锚点,因为它会否定字符 class。
也就是^
里面的一个字class,说成[^abc]
就否定了字class的意思。
例如 [abc]
将匹配 a
b
或 c
而 [^abc]
将不匹配 a
b
或 c
。也可以表述为 除 a
b
或 c