python中一次替換字串中的多個字元
先直接上解決方案:
比如下面給出的字串a,有字母、'(單引號)、\n(換行符)、數字、:(冒號)、,(逗號),目標是隻保留字串中的數字和字母,且看我如何操作。
import re
a='eew \' eawr,2 fd\n sa:21'
b=re.sub(r'[\':\s ,]*', '', a) # 前面是正則表示式,匹配多種字元(串)
print(b)
具體執行展示一下:
解釋一下這個正則表示式的意思:r'[\':\s ,]*'
1:r指明這是一個正則表示式
2:[]內是一個字符集,字符集內的字元任何一個被匹配,都算匹配成功,比如r'a[bcd]e',可以匹配到'abe'、'ace'、'ade'。
3:*代表匹配前一個字元0次或無限次。
4:\s代表的是空白字元,比如空格、換行符、製表符等等。
於是r'[\':\s ,]*'組合起來就是匹配字串中所有的的'(單引號)、\n(換行符)、:(冒號)、,(逗號)
最後re.sub(a, b, string)表示將string中a所匹配到的所有字元通通替換成b,我們這個例子就是將匹配到的'(單引號)、\n(換行符)、:(冒號)、,(逗號)通通替換成''(nothing)。
關於正則表示式,另外我是受了這篇文章的啟發(在此感謝):啟發就是re.sub可以傳給他正則表示式。
在此之前,先試了一下用正則表示式來匹配多個字串,然後用
看看在replace中用上面提到的思路是什麼結果:
看到了嗎,我的正則表示式可沒寫錯,是replace不行,就是說replace不接受我的正則表示式。
最後讓我們來欣賞一首詩吧:
我看到了我的愛戀,
我飛到她的身邊
我捧出給她的禮物
那是一小塊凝固的時間
時間上有美麗的條文
摸起來像淺海的泥一樣柔軟
她把時間塗滿全身
然後拉起我飛向存在的邊緣
這是靈態的飛行
我們眼中的星星像幽靈
星星眼中的我們也像幽靈
——語出《三體》