我希望我的代码只返回特殊字符[".", "*", "=", ","]
我想删除所有数字/字母字符("\W")
和所有空白("\S")
import re
original_string = "John is happy. He owns 3*4=12, apples"
new_string = re.findall("\W\S",original_string)
print(new_string)
但我得到了这个作为我的输出:[' i', ' h', ' H', ' o', ' 3', '*4', '=1', ' a']
我完全不知道为什么会发生这种情况。因此我有两个问题:
1)使用正则表达式是否可以实现我的目标
2)我的代码实际上发生了什么?
您很接近,但您需要在字符类中指定这些转义序列。
re.findall(r'[^\w\s]', original_string)
# ['.', '*', '=', ',']
请注意插入符号^
表示否定(即don't匹配这些字符)。
或者,与其删除不需要的内容,为什么不提取您需要的内容呢?
re.findall(r'[.*=,]', original_string)
# ['.', '*', '=', ',']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)