Python 常用模塊 re 使用方法詳解
一.re模塊的查找方法:
1.findall 匹配所有每一項(xiàng)都是列表中的一個(gè)元素
import re
ret = re.findall('\d+','asd魯班七號(hào)21313') # 正則表達(dá)式,待匹配的字符串,flag
# ret = re.findall('\d','asd魯班七號(hào)21313') # 正則表達(dá)式,待匹配的字符串,flag
# print(ret)
2.search 只匹配從左到右的第一個(gè),等到的不是直接的結(jié)果,而是一個(gè)變量,通過這個(gè)變量的group方法來獲取結(jié)果
import re
ret = re.search('\d+','asd魯班七號(hào)21313')
print(ret) # 內(nèi)存地址,這是一個(gè)正則匹配的結(jié)果
print(ret.group()) # 通過ret.group()獲取真正的結(jié)果
2.1如果沒有匹配到,會(huì)返回None,使用group會(huì)報(bào)錯(cuò)
ret = re.search('\d+','asd魯班七號(hào)')
print(ret.group())
2.2所以這個(gè)時(shí)候調(diào)用我要用一下格式
ret = re.search('\d+','asd魯班七號(hào)')
if ret:
print(ret.group())
3.match 從頭開始匹配,相當(dāng)于search中的正則表達(dá)式加上^
ret = re.match('\d+','1233asd魯班七號(hào)21313')
print(ret)
二.字符串處理擴(kuò)展
1.split--切割
s = 'luban|cheng|an|'
print(s.split('|'))
s = 'luban34cheng21an89'
print(re.split('\d+',s))
2.sub--替換
ret = re.sub('\d+','H','luban34cheng21an89',1)
print(ret)
3.subn 返回一個(gè)元祖,返回第二個(gè)元素是替換的次數(shù)
ret = re.subn('\d+','H','luban34cheng21an89')
print(ret)
三.re模塊的進(jìn)階
1.compile 節(jié)省你使用正則表達(dá)式解決問題的時(shí)間,編譯正則表達(dá)式,編譯成字節(jié)碼,在多次使用的過程中,不會(huì)多次編譯
ret = re.compile('\d+') # 已經(jīng)完成編譯
print(ret)
res = ret.findall('luban34cheng21an89')
print(res)
res = ret.search('1233asd魯班七號(hào)21313')
print(res.group())
2.finditer 節(jié)省你使用正則表達(dá)式解決問題的空間
ret = re.finditer('\d+','1233asd魯班七號(hào)21313')
for i in ret:
print(i.group())
四.總結(jié)
findall 返回列表,找所有的匹配項(xiàng)
search 匹配就返回一個(gè)變量,通過group取匹配到的第一值,不匹配就返回None,group會(huì)報(bào)錯(cuò)
match 相當(dāng)于search的正則表達(dá)式中加了一個(gè)'^'
split 返回列表,按照正則規(guī)則切割,默認(rèn)匹配到的內(nèi)容會(huì)被切掉
sub/subn 替換,按照正則規(guī)則去尋找要被替換的內(nèi)容,subn返回元祖,第二個(gè)值是替換的次數(shù)
compile 編譯一個(gè)正則表達(dá)式,用這個(gè)結(jié)果去search,match,fildall,finditer 能夠節(jié)省時(shí)間
finditer 返回一個(gè)迭代器,所有的結(jié)果都在這個(gè)迭代器中,需要通過循環(huán)+group的形式取值 能夠節(jié)省內(nèi)存
以上所述是小編給大家介紹的Python 常用模塊 re 使用方法詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
python安裝mysql的依賴包mysql-python操作
這篇文章主要介紹了python安裝mysql的依賴包mysql-python操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01
利用python實(shí)現(xiàn)數(shù)據(jù)分析
為什么要利用python進(jìn)行數(shù)據(jù)分析?python擁有一個(gè)巨大的活躍的科學(xué)計(jì)算社區(qū),擁有不斷改良的庫,能夠輕松的集成C,C++,Fortran代碼(Cython項(xiàng)目),可以同時(shí)用于研究和原型的構(gòu)建以及生產(chǎn)系統(tǒng)的構(gòu)建。2017-01-01
詳解python tkinter包獲取本地絕對(duì)路徑(以獲取圖片并展示)
這篇文章主要給大家介紹了關(guān)于python tkinter包獲取本地絕對(duì)路徑(以獲取圖片并展示)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
python內(nèi)置模塊OS?實(shí)現(xiàn)SHELL端文件處理器
這篇文章主要介紹了python內(nèi)置模塊OS實(shí)現(xiàn)SHELL端文件處理器,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
Pytorch-mlu?實(shí)現(xiàn)添加逐層算子方法詳解
本文主要分享了在寒武紀(jì)設(shè)備上?pytorch-mlu?中添加逐層算子的方法教程,代碼具有一定學(xué)習(xí)價(jià)值,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
python實(shí)現(xiàn)機(jī)器學(xué)習(xí)之元線性回歸
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)機(jī)器學(xué)習(xí)之元線性回歸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
Python運(yùn)維開發(fā)之psutil庫的使用詳解
這篇文章主要介紹了Python運(yùn)維開發(fā)之psutil庫的使用,psutil能夠輕松實(shí)現(xiàn)獲取系統(tǒng)運(yùn)行的進(jìn)程和系統(tǒng)利用率。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10

