我想过滤掉字符串中的特殊字符,但我也希望保留其中的一些字符(例如,我想保留撇号,&, - ,%)
此代码将保留撇号,但如何添加我想要保留的其他符号?
msg = 'Hi! I'm Mike, I like M&M. How are you?'
pattern = re.compile("[^\w']")
pattern.sub ('', msg)
>>Output Desired: "Hi I'm Mike I like M&M How are you"
答案 0 :(得分:3)
像这样添加:
import re
msg = "Hi! I'm Mike, I like M&M. How are you?"
pattern = re.compile(r"[^\s\w'&%-]")
print(pattern.sub ('', msg)) # => Hi I'm Mike I like M&M How are you
请参阅Python demo
<强>详情
[^
- 匹配任何字符的否定字符类的开头,但......
\s
- 空白\w
- 字char(字母,数字或/和_
)'
- 单引号&
- &
符号
- %
- %
符号-
- 一个连字符(因为它在结尾处,它将被解析为文字-
)]
- 字符类的结尾。请注意,您可以转义连字符以确保它将被解析为文字-
,即使您在其后添加更多字符并忘记将其转义:r"[^\s\w'&%\-]"
。
请参阅this answer以了解如何在Python正则表达式字符类中使用文字连字符。