我想从字符串中过滤出特殊字符,但我也想保留其中的一些(例如,我想保留撇号、&符号、破折号、百分号)
这段代码将保留撇号,但是我如何添加其他我想要保留的符号?
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"
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演示
详情
[^
- 开始一个否定字符类,匹配除...
\s
- 空白字符\w
- 单词字符(字母、数字或/和_
)'
- 单引号&
- &
符号
-%
- %
符号-
- 连字符(由于它在结尾,因此将被解析为文字-
)]
- 字符类的结束。请注意,您可以转义连字符,以确保即使在其后添加更多字符并忘记转义它时,它也将被解析为文字-
:r"[^\s\w'&%\-]"
。
请参见此答案了解如何在Python正则表达式字符类中使用文字连字符的更多信息。