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