Python來進(jìn)行查詢和替換一個(gè)文本字符串?
可以使用sub()方法來進(jìn)行查詢和替換,sub方法的格式為:
sub(replacement, string[, count=0])
replacement是被替換成的文本
string是需要被替換的文本
count是一個(gè)可選參數(shù),指最大被替換的數(shù)量
例子:
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()一樣,不過它會返回一個(gè)二維數(shù)組,包括替換后的新的字符串和總共替換的數(shù)量
例如:
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)
補(bǔ)充:Python中正則表達(dá)式sub函數(shù)用法總結(jié)
正則表達(dá)式一個(gè)比較常見的用途是找到所有模式匹配的字符串并用不同的字符串來替換它們。sub方法提供一個(gè)替換值,可以是字符串或函數(shù),和一個(gè)要被處理的字符串。
1、這里的sub方法,是被編譯成‘RegexObject'實(shí)例后的實(shí)例的方法
Sub(replacement,string[,count =0 ])
1)返回的字符串是在字符串中用RE最左邊不重復(fù)的匹配來替換。如果模式?jīng)]有被發(fā)現(xiàn),字符將沒有被改變的返回。
2)可選參數(shù)count是模式匹配后替換的最大次數(shù);count必須是非負(fù)整數(shù)。缺省值是0表示替換所有的匹配。
例子:
2、模塊級函數(shù):sub方法
注:這些函數(shù)(包括sub函數(shù))使用RE字符串作為第一個(gè)參數(shù),而后面的參數(shù)與相應(yīng)的“RegexObject”方法的參數(shù)相同,返回要么是None,要么是一個(gè)‘MatchObject'實(shí)例。
(實(shí)際sub返回的是字符串,,兩者說法不一致,以實(shí)際為準(zhǔn))
Re.sub的作用在于:使用給定的替換內(nèi)容將匹配模式的子字符串(最左端并且非重疊的子字符串)替換掉
3、作為替換的組號
在2的例子中,只是把一個(gè)字符串用其他的內(nèi)容替換掉了。用replace這個(gè)字符串方法能輕松達(dá)到同樣的效果。而正則表達(dá)式允許以更靈活的方式進(jìn)行搜索,同時(shí)它們也允許進(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ù)可以將一個(gè)函數(shù)作為第二個(gè)參數(shù)(替換式)。函數(shù)會被匹配的對象調(diào)用,并且它的返回值會被插入到文本中。(但從例子2看來,是函數(shù)的唯一參數(shù)是被匹配的對象)
例子1:
test.txt內(nèi)容:
結(jié)果:
例子2
(該例子在《python基礎(chǔ)教程》20章)
Sub方法不直接調(diào)用callback,而是返回一個(gè)新的函數(shù),這個(gè)函數(shù)會被當(dāng)成re.sub的替換函數(shù)來使用(這就是采用一個(gè)匹配的對象作為唯一參數(shù)的原因)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- Python plt 利用subplot 實(shí)現(xiàn)在一張畫布同時(shí)畫多張圖
- 使用sublime text3搭建Python編輯環(huán)境的實(shí)現(xiàn)
- python3通過subprocess模塊調(diào)用腳本并和腳本交互的操作
- python subprocess pipe 實(shí)時(shí)輸出日志的操作
- 通過實(shí)例解析python subprocess模塊原理及用法
- python使用matplotlib:subplot繪制多個(gè)子圖的示例
- Python子進(jìn)程subpocess原理及用法解析
- python字符串替換re.sub()實(shí)例解析