2017-08-23 62 views
3

我想篩選出一個字符串中的特殊字符,但我也希望保留他們中的一些(例如,我想保留撇號,&, - ,%)過濾掉特殊字符,但保留一些

此代碼將保留撇號,但是如何添加我想保留的其他符號?

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" 

回答

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

詳細

  • [^ - 一個開始否定字符類matchi NG任何字符,但...
    • \s - 空白
    • \w - 字字符(字母,數字和/或_
    • ' - 一個單引號
    • & - 一個&符號 - % - 一個%符號
    • - - 連字符(因爲它在最後,它將被解析爲文字-
  • ] - 字符類的結尾。

注意您可能逃跑的連字符,以確保即使你後,添加更多的字符,卻忘了逃避它,它會被解析爲一個文字-r"[^\s\w'&%\-]"

請參閱this answer瞭解更多如何在Python正則表達式字符類中使用文字連字符。

相關問題