Python來進行查詢和替換一個文本字符串?
可以使用sub()方法來進行查詢和替換,sub方法的格式為:
sub(replacement, string[, count=0])
replacement是被替換成的文本
string是需要被替換的文本
count是一個可選參數,指最大被替換的數量
例子:
import re
p = re.compile('(blue|white|red)')
print(p.sub('colour','blue socks and red shoes'))
print(p.sub('colour','blue socks and red shoes', count=1))
輸出:
colour socks and colour shoes
colour socks and red shoes
subn()方法執(zhí)行的效果跟sub()一樣,不過它會返回一個二維數組,包括替換后的新的字符串和總共替換的數量
例如:
import re
p = re.compile('(blue|white|red)')
print(p.subn('colour','blue socks and red shoes'))
print(p.subn('colour','blue socks and red shoes', count=1))
輸出
('colour socks and colour shoes', 2)
('colour socks and red shoes', 1)
補充:Python中正則表達式sub函數用法總結
正則表達式一個比較常見的用途是找到所有模式匹配的字符串并用不同的字符串來替換它們。sub方法提供一個替換值,可以是字符串或函數,和一個要被處理的字符串。
1、這里的sub方法,是被編譯成‘RegexObject'實例后的實例的方法
Sub(replacement,string[,count =0 ])
1)返回的字符串是在字符串中用RE最左邊不重復的匹配來替換。如果模式沒有被發(fā)現,字符將沒有被改變的返回。
2)可選參數count是模式匹配后替換的最大次數;count必須是非負整數。缺省值是0表示替換所有的匹配。
例子:

2、模塊級函數:sub方法

注:這些函數(包括sub函數)使用RE字符串作為第一個參數,而后面的參數與相應的“RegexObject”方法的參數相同,返回要么是None,要么是一個‘MatchObject'實例。
(實際sub返回的是字符串,,兩者說法不一致,以實際為準)
Re.sub的作用在于:使用給定的替換內容將匹配模式的子字符串(最左端并且非重疊的子字符串)替換掉

3、作為替換的組號
在2的例子中,只是把一個字符串用其他的內容替換掉了。用replace這個字符串方法能輕松達到同樣的效果。而正則表達式允許以更靈活的方式進行搜索,同時它們也允許進行功能更強大的替換。
見證re.sub強大功能的最簡單方式就是在替換字符串中使用組號。在替換內容中以‘\\n'型式出現的任何轉義序列都會被模式中與組n匹配的字符串替換掉。
例如,假設要把‘*something*'用‘em>someting/em>'替換掉,前者是在普通文本文檔(比如Email)中進行強調的常用方法,而后者則是相應的HTML代碼(用于網頁)

這里把所有的* *含的字符串都替換掉了。剛開始我以為只替換*world*。記一筆。
4、作為替換的函數
Re.sub函數可以將一個函數作為第二個參數(替換式)。函數會被匹配的對象調用,并且它的返回值會被插入到文本中。(但從例子2看來,是函數的唯一參數是被匹配的對象)
例子1:
test.txt內容:

結果:

例子2
(該例子在《python基礎教程》20章)
Sub方法不直接調用callback,而是返回一個新的函數,這個函數會被當成re.sub的替換函數來使用(這就是采用一個匹配的對象作為唯一參數的原因)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- Python plt 利用subplot 實現在一張畫布同時畫多張圖
- 使用sublime text3搭建Python編輯環(huán)境的實現
- python3通過subprocess模塊調用腳本并和腳本交互的操作
- python subprocess pipe 實時輸出日志的操作
- 通過實例解析python subprocess模塊原理及用法
- python使用matplotlib:subplot繪制多個子圖的示例
- Python子進程subpocess原理及用法解析
- python字符串替換re.sub()實例解析