过滤掉特殊字符但保留一些。

5

我想从字符串中过滤出特殊字符,但我也想保留其中的一些(例如,我想保留撇号、&符号、破折号、百分号)

这段代码将保留撇号,但是我如何添加其他我想要保留的符号?

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"
1个回答

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演示

详情

  • [^ - 开始一个否定字符类,匹配除...
    • \s - 空白字符
    • \w - 单词字符(字母、数字或/和_
    • ' - 单引号
    • & - &符号 -% - %符号
    • - - 连字符(由于它在结尾,因此将被解析为文字-
  • ] - 字符类的结束。

请注意,您可以转义连字符,以确保即使在其后添加更多字符并忘记转义它时,它也将被解析为文字-r"[^\s\w'&%\-]"

请参见此答案了解如何在Python正则表达式字符类中使用文字连字符的更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接