Python中sub()的用法說明
Python來進(jìn)行查詢和替換一個文本字符串?
可以使用sub()方法來進(jìn)行查詢和替換,sub方法的格式為:sub(replacement, string[, count=0])
replacement是被替換成的文本
string是需要被替換的文本
count是一個可選參數(shù),指最大被替換的數(shù)量
例子:import rep = 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 shoescolour socks and red shoes
subn()方法執(zhí)行的效果跟sub()一樣,不過它會返回一個二維數(shù)組,包括替換后的新的字符串和總共替換的數(shù)量
例如:import rep = 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)
補(bǔ)充:Python中正則表達(dá)式sub函數(shù)用法總結(jié)
正則表達(dá)式一個比較常見的用途是找到所有模式匹配的字符串并用不同的字符串來替換它們。sub方法提供一個替換值,可以是字符串或函數(shù),和一個要被處理的字符串。
1、這里的sub方法,是被編譯成‘RegexObject’實例后的實例的方法Sub(replacement,string[,count =0 ])
1)返回的字符串是在字符串中用RE最左邊不重復(fù)的匹配來替換。如果模式?jīng)]有被發(fā)現(xiàn),字符將沒有被改變的返回。
2)可選參數(shù)count是模式匹配后替換的最大次數(shù);count必須是非負(fù)整數(shù)。缺省值是0表示替換所有的匹配。
例子:注:這些函數(shù)(包括sub函數(shù))使用RE字符串作為第一個參數(shù),而后面的參數(shù)與相應(yīng)的“RegexObject”方法的參數(shù)相同,返回要么是None,要么是一個‘MatchObject’實例。
(實際sub返回的是字符串,,兩者說法不一致,以實際為準(zhǔn))
Re.sub的作用在于:使用給定的替換內(nèi)容將匹配模式的子字符串(最左端并且非重疊的子字符串)替換掉
在2的例子中,只是把一個字符串用其他的內(nèi)容替換掉了。用replace這個字符串方法能輕松達(dá)到同樣的效果。而正則表達(dá)式允許以更靈活的方式進(jìn)行搜索,同時它們也允許進(jìn)行功能更強(qiáng)大的替換。
見證re.sub強(qiáng)大功能的最簡單方式就是在替換字符串中使用組號。在替換內(nèi)容中以‘n’型式出現(xiàn)的任何轉(zhuǎn)義序列都會被模式中與組n匹配的字符串替換掉。
例如,假設(shè)要把‘*something*’用‘<em>someting</em>’替換掉,前者是在普通文本文檔(比如Email)中進(jìn)行強(qiáng)調(diào)的常用方法,而后者則是相應(yīng)的HTML代碼(用于網(wǎng)頁)
這里把所有的* *含的字符串都替換掉了。剛開始我以為只替換*world*。記一筆。
4、作為替換的函數(shù)Re.sub函數(shù)可以將一個函數(shù)作為第二個參數(shù)(替換式)。函數(shù)會被匹配的對象調(diào)用,并且它的返回值會被插入到文本中。(但從例子2看來,是函數(shù)的唯一參數(shù)是被匹配的對象)
例子1:test.txt內(nèi)容:
結(jié)果:
(該例子在《python基礎(chǔ)教程》20章)
Sub方法不直接調(diào)用callback,而是返回一個新的函數(shù),這個函數(shù)會被當(dāng)成re.sub的替換函數(shù)來使用(這就是采用一個匹配的對象作為唯一參數(shù)的原因)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章:
