python - 替换非字母数字字符,除了一些异常(exception) python

标签 python regex alphanumeric

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

在 python 中,我使用 re.sub(r'\W+', '',mystring) 它确实删除了除 _ 下划线之外的所有非字母数字。 有什么办法可以放置异常(exception),我不希望替换 = 和 .

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

Google 没有提供合适的答案。最近的搜索是 python regex split any \W+ with some exceptions但这对我也没有帮助。

最佳答案

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

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

测试

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

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

否定字符类是什么意思

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

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

例如 [abc] 将匹配 a bc 其中 [^abc ] 将不匹配 a bc。也可以用 a bc

以外的任何词组来表达

关于python - 替换非字母数字字符,除了一些异常(exception) python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27938765/

相关文章:

python - Python 中的分布式单元测试和代码覆盖率

regex - 使用 map 和 grep 查找带下划线的文件名

c# - 创建一个唯一的 5 个字符的字母数字字符串

php - 编码一般的 4 位字母数字系列

python - pip 的 `--no-cache-dir` 有什么用?

python - 选择第一个元素之后的第二个元素

python - tensorflow 中的不规则/变化的批量大小?

regex - 在 PowerShell 中组合两个正则表达式

php - 更改函数以使用 preg_replace() 而不是 ereg_replace

java - JAVA加密一个整数只得到数字字符