1. 程式人生 > >python中一次替換字串中的多個字元

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中用上面提到的思路是什麼結果:

 看到了嗎,我的正則表示式可沒寫錯,是replace不行,就是說replace不接受我的正則表示式。

最後讓我們來欣賞一首詩吧:

我看到了我的愛戀,
我飛到她的身邊
我捧出給她的禮物
那是一小塊凝固的時間
時間上有美麗的條文
摸起來像淺海的泥一樣柔軟

她把時間塗滿全身
然後拉起我飛向存在的邊緣

這是靈態的飛行
我們眼中的星星像幽靈
星星眼中的我們也像幽靈

                                       ——語出《三體》