01 Re概覽
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比孟連網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式孟連網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋孟連地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
Re模塊是python的內(nèi)置模塊,提供了正則表達(dá)式在python中的所有用法,默認(rèn)安裝位置在python根目錄下的Lib文件夾(如 ..\Python\Python37\Lib)。主要提供了3大類字符串操作方法:
字符查找/匹配
字符替換
字符分割
由于是面向字符串類型的模塊,就不得不提到字符串編碼類型。re模塊中,模式串和搜索串既可以是 Unicode 字符串 (常用str類型) ,也可以是8位字節(jié)串 (bytes,2位16進(jìn)制數(shù)字,例如\xe5) , 但要求二者必須是同類型字符串。
02 字符串查找/匹配
預(yù)編譯:compile
在介紹查找和匹配函數(shù)前,首先需要知道re的compile函數(shù),該函數(shù)可以將一個(gè)模式串編譯成正則表達(dá)式類型,以便后續(xù)快速匹配和復(fù)用
import?re pattern?=?re.compile(r'[a-z]{2,5}') type(pattern)?#re.Pattern
此例創(chuàng)建了一個(gè)正則表達(dá)式式對(duì)象 (re.pattern) ,命名為pattern,用于匹配2-5位小寫(xiě)字母的模式串。后續(xù)在使用其他正則表達(dá)式函數(shù)時(shí),即可使用pattern進(jìn)行方法調(diào)用。
匹配:match
match函數(shù)用于從文本串的起始位置開(kāi)始匹配,若匹配成功,則返回相應(yīng)的匹配對(duì)象,此時(shí)可調(diào)用group()方法返回匹配結(jié)果,也可用span()方法返回匹配起止下標(biāo)區(qū)間;否則返回None
import?re pattern?=?re.compile(r'[a-z]{2,5}') text1?=?'this?is?a?re?test' res?=?pattern.match(text1) print(res)?# if?res: ?print(res.group())?#this ?print(res.span())?#(0,?4) text2?=?'是的,?this?is?a?re?test' print(pattern.match(text2))#None
match函數(shù)還有一個(gè)變形函數(shù)fullmatch,當(dāng)且僅當(dāng)模式串與文本串剛好全部匹配時(shí),返回一個(gè)匹配對(duì)象,否則返回None
搜索:search
match只提供了從文本串起始位置匹配的結(jié)果,如果想從任意位置匹配,則可調(diào)用search方法,與match方法類似,當(dāng)任意位置匹配成功,則立即返回一個(gè)匹配對(duì)象,也可調(diào)用span()方法獲取起止區(qū)間、調(diào)用group方法獲得匹配文本串
import?re pattern?=?re.compile(r'\s[a-z]{2}') text1?=?'this?is?a?re?test' res?=?pattern.search(text1) print(res)?# if?res: ?print(res.group())?#is ?print(res.span())?#(4,?7) pattern2?=?re.compile(r'\s[a-z]{5}') text2?=?'是的,this?is?a?re?test' print(pattern2.search(text2))#None
match和search均用于匹配單個(gè)結(jié)果,唯一區(qū)別在于前者是從起始位置開(kāi)始匹配,而后者從任意位置匹配,匹配成功則返回一個(gè)match對(duì)象。
全搜索:findall/finditer
幾乎是最常用的正則表達(dá)式函數(shù),用于尋找所有匹配的結(jié)果,例如在爬蟲(chóng)信息提取中,可非常方便地提取所有匹配字段
import?re pattern?=?re.compile(r'\s[a-z]{2,5}') text1?=?'this?is?a?re?test' res?=?pattern.findall(text1) print(res)?#['?is',?'?re',?'?test']
findall返回的是一個(gè)列表對(duì)象類型,當(dāng)無(wú)匹配對(duì)象時(shí),返回一個(gè)空列表。為了避免因同時(shí)返回大量匹配結(jié)果占用過(guò)多內(nèi)存,可以調(diào)用finditer函數(shù)返回一個(gè)迭代器類型,其中每個(gè)迭代元素是一個(gè)match對(duì)象,可繼續(xù)調(diào)用group和span方法獲取相應(yīng)結(jié)果
import?re pattern?=?re.compile(r'\s[a-z]{2,5}') text1?=?'this?is?a?re?test' res?=?pattern.finditer(text1) for?r?in?res: ?print(r.group()) """ ?is ?re ?test """
當(dāng)匹配模式串較為簡(jiǎn)單或者僅需單詞調(diào)用時(shí),上述所有方法也可直接調(diào)用re類函數(shù),而無(wú)需事先編譯。此時(shí)各方法的第一個(gè)參數(shù)為模式串。
import?re pattern?=?re.compile(r'\d{2,5}') text?=?'this?is?re?test' re.findall('[a-z]+',?text)?#['this',?'is',?'re',?'test'] 03 字符串替換/分割
替換:sub/subn
當(dāng)需要對(duì)文本串進(jìn)行條件替換時(shí),可調(diào)用re.sub實(shí)現(xiàn) (當(dāng)然也可先編譯后再用調(diào)用實(shí)例方法) ,相應(yīng)參數(shù)分別為模式串、替換格式、文本串,還可以通過(guò)增加缺省參數(shù)限定替換次數(shù)和匹配模式。通過(guò)在模式串進(jìn)行分組,可實(shí)現(xiàn)字符串的格式化替換(類似字符串的format方法),以實(shí)現(xiàn)特定任務(wù)。
import?re text?=?'today?is?2020-03-05' print(re.sub('-',?'',?text))?#'today?is?20200305' print(re.sub('-',?'',?text,?1))?#'today?is?202003-05' print(re.sub('(\d{4})-(\d{2})-(\d{2})',?r'\2/\3/\1',?text))?#'today?is?03/05/2020'
re.sub的一個(gè)變形方法是re.subn,區(qū)別是返回一個(gè)2元素的元組,其中第一個(gè)元素為替換結(jié)果,第二個(gè)為替換次數(shù)
import?re text?=?'today?is?2020-03-05' print(re.subn('-',?'',?text))?#('today?is?20200305',?2)
分割:split
還可以調(diào)用正則表達(dá)式實(shí)現(xiàn)字符串的特定分割,相當(dāng)于.split()方法的一個(gè)加強(qiáng)版,實(shí)現(xiàn)特定模式的分割,返回一個(gè)切割后的結(jié)果列表
import?re text?=?'today?is?a?re?test,?what?do?you?mind?' print(re.split(',',?text))?#['today?is?a?re?test',?'?what?do?you?mind?'] 04 總結(jié)
python中的re模塊提供了正則表達(dá)式的常用方法,每種方法都包括類方法調(diào)用(如re.match)或模式串的實(shí)例調(diào)用(pattern.match)2種形式
常用的匹配函數(shù):match/fullmatch
常用的搜索函數(shù):search/findall/finditer
常用的替換函數(shù):sub/subn
常用的切割函數(shù):split
還有其他很多方法,但不是很常用,具體可參考官方文檔
另外,python還有第三方正則表達(dá)式庫(kù)regex可供選擇
到此這篇關(guān)于一文秒懂python正則表達(dá)式常用函數(shù)的文章就介紹到這了,希望大家以后多多支持!
python中l(wèi)en()的用法:
新建一個(gè)len()函數(shù)的使用py,中文編碼聲明注釋:#coding=gbk,函數(shù):len()作用:返回字符串、列表、字典、元組等長(zhǎng)度。語(yǔ)法:len(str)。參數(shù):str:要計(jì)算的字符串、列表、字典、元組等。返回值:字符串、列表、字典、元組等元素的長(zhǎng)度。
實(shí)例:
1、計(jì)算字符串的長(zhǎng)度。
2、計(jì)算列表的元素個(gè)數(shù)。
3、計(jì)算字典的總長(zhǎng)度,即鍵值對(duì)總數(shù)。
4、計(jì)算元組元素個(gè)數(shù)。
在Python中,要知道一個(gè)字符串有多少個(gè)字符,以獲得字符串的長(zhǎng)度,或者一個(gè)字符串需要多少字節(jié),可以使用len函數(shù)。
函數(shù)調(diào)用
myFun()
# 函數(shù)的參數(shù)
# 單個(gè)參數(shù)
# 場(chǎng)景
# 需要?jiǎng)討B(tài)的調(diào)整函數(shù)體中某一個(gè)處理信息
# 則可以, 以參數(shù)的形式接收到相關(guān)數(shù)據(jù)
# 定義
# def 函數(shù)名(參數(shù)名稱):
# 函數(shù)體
# 函數(shù)體中, 可以直接以變量的方式使用該參數(shù)
# 函數(shù)的調(diào)用
# 函數(shù)名(參數(shù)值)
# 形參和實(shí)參的概念
# 上述函數(shù)定義中, "參數(shù)名稱"即為形參;
# 在調(diào)用函數(shù)的時(shí)候, 傳遞的真實(shí)數(shù)據(jù), 即為實(shí)參
# 多個(gè)參數(shù)
# 場(chǎng)景
# 需要?jiǎng)討B(tài)的調(diào)整函數(shù)體中多個(gè)處理信息時(shí)
# 則可以以 逗號(hào) 做分割, 接收多個(gè)參數(shù)
# 定義
# def 函數(shù)名(參數(shù)名稱1, 參數(shù)名稱2):
# 函數(shù)體
# 函數(shù)體中, 可以直接以變量的方式使用所有參數(shù)
# 調(diào)用
# 方式1
# 函數(shù)名(參數(shù)1, 參數(shù)2, 參數(shù)3...)
# 形參和實(shí)參一一對(duì)應(yīng)
# 方式2
# 函數(shù)名(參數(shù)名稱1=參數(shù)1, 參數(shù)名稱n = 參數(shù)n...)
# 可以指明形參名稱
# 稱為"關(guān)鍵字參數(shù)"
# 不需要嚴(yán)格按照順序
# 不定長(zhǎng)參數(shù)
# 場(chǎng)景
# 如果函數(shù)體中, 需要處理的數(shù)據(jù), 不確定長(zhǎng)度
# 則可以以不定長(zhǎng)參數(shù)的方式接收數(shù)據(jù)
# 方式1
# 定義
# def 函數(shù)名(*args):
# 元組
# 函數(shù)體
# 函數(shù)體中, 可以直接以元組變量的方式使用該參數(shù)
# 使用
# 函數(shù)名(參數(shù)1, 參數(shù)2, 參數(shù)3...)
網(wǎng)頁(yè)題目:python各函數(shù)的用法 python中的函數(shù)
當(dāng)前鏈接:http://m.newbst.com/article2/doihdic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、搜索引擎優(yōu)化、企業(yè)網(wǎng)站制作、定制開(kāi)發(fā)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)