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,說明該字符串中全爲普通字符(可參考:以r或u開頭的字符串,按評論裏IwillbecomeAIgod同學的說法是用於防轉義),常用於正則表達式

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不接受我的正則表達式。
————————————————
版權聲明:本文爲CSDN博主「liucheng_zimozigreat」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/liuchengzimozigreat/article/details/85339372

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章