本文首發於公衆號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點
很多時候我們需要過濾掉標點符號等特殊字符,網上雖然有一堆的方法,但是都沒有找到一個非常滿意的,有些過濾不了中文的標點符號,有些過濾不了英文的標點符號,有些過濾不全。
最後通過查看正則表達式文檔,發現一個高效的辦法,一行代碼就能搞定:
def replace_all_blank(value):
"""
去除value中的所有非字母內容,包括標點符號、空格、換行、下劃線等
:param value: 需要處理的內容
:return: 返回處理後的內容
"""
# \W 表示匹配非數字字母下劃線
result = re.sub('\W+', '', value).replace("_", '')
print(result)
return result
其中用到了Python
的re
模塊,re
模塊裏面包含了所有的正則表達式的應用。代碼裏面有幾個點:
- re.sub(參數1,參數2,參數3)方法,表示匹配到以後替換。其中參數1表示正則匹配的模式,參數2表示匹配到以後用參數2替換原內容,參數3表示要處理的字符串
-
\W
這個正則表示匹配非數字字母下劃線,所以下劃線是不會被替換的,上面可以看到用replace方法去掉了下劃線
測試一下:
replace_all_blank("Powe, on;the 2333, 。哈哈 !!看看可以嗎?一行代碼就可以了!^_^")
輸出結果:
Poweonthe2333哈哈看看可以嗎一行代碼就可以了
一行代碼搞定!Perfect!
最後推薦大家官網re
模塊的正則表達式文檔地址:
https://docs.python.org/zh-cn/3.6/library/re.html
裏面有很詳細的正則表達式介紹和舉例,關鍵還是中文的喔!