老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)

python最佳函數(shù) python求函數(shù)最值的方法

一文秒懂python正則表達(dá)式常用函數(shù)

01 Re概覽

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),徐水企業(yè)網(wǎng)站建設(shè),徐水品牌網(wǎng)站建設(shè),網(wǎng)站定制,徐水網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,徐水網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

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位小寫字母的模式串。后續(xù)在使用其他正則表達(dá)式函數(shù)時(shí),即可使用pattern進(jìn)行方法調(diào)用。

匹配:match

match函數(shù)用于從文本串的起始位置開始匹配,若匹配成功,則返回相應(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ū)別在于前者是從起始位置開始匹配,而后者從任意位置匹配,匹配成功則返回一個(gè)match對(duì)象。

全搜索:findall/finditer

幾乎是最常用的正則表達(dá)式函數(shù),用于尋找所有匹配的結(jié)果,例如在爬蟲信息提取中,可非常方便地提取所有匹配字段

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)無匹配對(duì)象時(shí),返回一個(gè)空列表。為了避免因同時(shí)返回大量匹配結(jié)果占用過多內(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)匹配模式串較為簡單或者僅需單詞調(diào)用時(shí),上述所有方法也可直接調(diào)用re類函數(shù),而無需事先編譯。此時(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ù)分別為模式串、替換格式、文本串,還可以通過增加缺省參數(shù)限定替換次數(shù)和匹配模式。通過在模式串進(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á)式庫regex可供選擇

到此這篇關(guān)于一文秒懂python正則表達(dá)式常用函數(shù)的文章就介紹到這了,希望大家以后多多支持!

python中獲取有效主題的函數(shù)

Lambda函數(shù)、Map函數(shù)、Filter函數(shù)、Zip函數(shù)、Reduce函數(shù)。

Lambda函數(shù)是Python中功能最強(qiáng)大的函數(shù)之一,它有時(shí)也被稱之為匿名函數(shù).。Map是程序員用來簡化程序的Python內(nèi)置函數(shù),此函數(shù)可以在不使用任何循環(huán)的情況下對(duì)所有指定的元素進(jìn)行迭代。Filter是Python中的另一個(gè)內(nèi)置函數(shù),當(dāng)需要區(qū)分其他類型的數(shù)據(jù)時(shí),這個(gè)函數(shù)非常有用。Filter函數(shù)經(jīng)常用于根據(jù)特定過濾條件來提取數(shù)據(jù)。

Python(英國發(fā)音:/paθn/美國發(fā)音:/paθn/)是一種廣泛使用的解釋型、高級(jí)和通用的編程語言。Python支持多種編程范型,包括函數(shù)式、指令式、結(jié)構(gòu)化、面向?qū)ο蠛头瓷涫骄幊獭K鼡碛袆?dòng)態(tài)類型系統(tǒng)和垃圾回收功能,能夠自動(dòng)管理內(nèi)存使用,并且其本身擁有一個(gè)巨大而廣泛的標(biāo)準(zhǔn)庫。

Python常用的正則表達(dá)式處理函數(shù)詳解

正則表達(dá)式是一個(gè)特殊的字符序列,用于簡潔表達(dá)一組字符串特征,檢查一個(gè)字符串是否與某種模式匹配,使用起來十分方便。

在Python中,我們通過調(diào)用re庫來使用re模塊:

import re

下面介紹Python常用的正則表達(dá)式處理函數(shù)。

re.match函數(shù)

re.match 函數(shù)從字符串的起始位置匹配正則表達(dá)式,返回match對(duì)象,如果不是起始位置匹配成功的話,match()就返回None。

re.match(pattern, string, flags=0)

pattern:匹配的正則表達(dá)式。

string:待匹配的字符串。

flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。具體參數(shù)為:

re.I:忽略大小寫。

re.L:表示特殊字符集 \w, \W, \b, \B, \s, \S 依賴于當(dāng)前環(huán)境。

re.M:多行模式。

re.S:即 . ,并且包括換行符在內(nèi)的任意字符(. 不包括換行符)。

re.U:表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依賴于 Unicode 字符屬性數(shù)據(jù)庫。

re.X:為了增加可讀性,忽略空格和 # 后面的注釋。

import?re #從起始位置匹配 r1=re.match('abc','abcdefghi') print(r1) #不從起始位置匹配 r2=re.match('def','abcdefghi') print(r2)

運(yùn)行結(jié)果:

其中,span表示匹配成功的整個(gè)子串的索引。

使用group(num) 或 groups() 匹配對(duì)象函數(shù)來獲取匹配表達(dá)式。

group(num):匹配的整個(gè)表達(dá)式的字符串,group() 可以一次輸入多個(gè)組號(hào),這時(shí)它將返回一個(gè)包含那些組所對(duì)應(yīng)值的元組。

groups():返回一個(gè)包含所有小組字符串的元組,從 1 到 所含的小組號(hào)。

import?re s='This?is?a?demo' r1=re.match(r'(.*)?is?(.*)',s) r2=re.match(r'(.*)?is?(.*?)',s) print(r1.group()) print(r1.group(1)) print(r1.group(2)) print(r1.groups()) print() print(r2.group()) print(r2.group(1)) print(r2.group(2)) print(r2.groups())

運(yùn)行結(jié)果:

上述代碼中的(.*)和(.*?)表示正則表達(dá)式的貪婪匹配與非貪婪匹配。

re.search函數(shù)

re.search函數(shù)掃描整個(gè)字符串并返回第一個(gè)成功的匹配,如果匹配成功則返回match對(duì)象,否則返回None。

re.search(pattern, string, flags=0)

pattern:匹配的正則表達(dá)式。

string:待匹配的字符串。

flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。

import?re #從起始位置匹配 r1=re.search('abc','abcdefghi') print(r1) #不從起始位置匹配 r2=re.search('def','abcdefghi') print(r2)

運(yùn)行結(jié)果:

使用group(num) 或 groups() 匹配對(duì)象函數(shù)來獲取匹配表達(dá)式。

group(num=0):匹配的整個(gè)表達(dá)式的字符串,group() 可以一次輸入多個(gè)組號(hào),這時(shí)它將返回一個(gè)包含那些組所對(duì)應(yīng)值的元組。

groups():返回一個(gè)包含所有小組字符串的元組,從 1 到 所含的小組號(hào)。

import?re s='This?is?a?demo' r1=re.search(r'(.*)?is?(.*)',s) r2=re.search(r'(.*)?is?(.*?)',s) print(r1.group()) print(r1.group(1)) print(r1.group(2)) print(r1.groups()) print() print(r2.group()) print(r2.group(1)) print(r2.group(2)) print(r2.groups())

運(yùn)行結(jié)果:

從上面不難發(fā)現(xiàn)re.match與re.search的區(qū)別:re.match只匹配字符串的起始位置,只要起始位置不符合正則表達(dá)式就匹配失敗,而re.search是匹配整個(gè)字符串,直到找到一個(gè)匹配為止。

re.compile 函數(shù)

compile 函數(shù)用于編譯正則表達(dá)式,生成一個(gè)正則表達(dá)式對(duì)象,供 match() 和 search() 這兩個(gè)函數(shù)使用。

re.compile(pattern[, flags])

pattern:一個(gè)字符串形式的正則表達(dá)式。

flags:可選,表示匹配模式,比如忽略大小寫,多行模式等。

import?re #匹配數(shù)字 r=re.compile(r'\d+')? r1=r.match('This?is?a?demo') r2=r.match('This?is?111?and?That?is?222',0,27) r3=r.match('This?is?111?and?That?is?222',8,27) ? print(r1) print(r2) print(r3)

運(yùn)行結(jié)果:

findall函數(shù)

搜索字符串,以列表形式返回正則表達(dá)式匹配的所有子串,如果沒有找到匹配的,則返回空列表。

需要注意的是,match 和 search 是匹配一次,而findall 匹配所有。

findall(string[, pos[, endpos]])

string:待匹配的字符串。

pos:可選參數(shù),指定字符串的起始位置,默認(rèn)為0。

endpos:可選參數(shù),指定字符串的結(jié)束位置,默認(rèn)為字符串的長度。

import?re #匹配數(shù)字 r=re.compile(r'\d+')? r1=r.findall('This?is?a?demo') r2=r.findall('This?is?111?and?That?is?222',0,11) r3=r.findall('This?is?111?and?That?is?222',0,27) ? print(r1) print(r2) print(r3)

運(yùn)行結(jié)果:

re.finditer函數(shù)

和 findall 類似,在字符串中找到正則表達(dá)式所匹配的所有子串,并把它們作為一個(gè)迭代器返回。

re.finditer(pattern, string, flags=0)

pattern:匹配的正則表達(dá)式。

string:待匹配的字符串。

flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如是否區(qū)分大小寫,多行匹配等。

import?re? r=re.finditer(r'\d+','This?is?111?and?That?is?222') for?i?in?r:? ?print?(i.group())

運(yùn)行結(jié)果:

re.split函數(shù)

將一個(gè)字符串按照正則表達(dá)式匹配的子串進(jìn)行分割后,以列表形式返回。

re.split(pattern, string[, maxsplit=0, flags=0])

pattern:匹配的正則表達(dá)式。

string:待匹配的字符串。

maxsplit:分割次數(shù),maxsplit=1分割一次,默認(rèn)為0,不限次數(shù)。

flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等。

import?re? r1=re.split('\W+','This?is?111?and?That?is?222')? r2=re.split('\W+','This?is?111?and?That?is?222',maxsplit=1)? r3=re.split('\d+','This?is?111?and?That?is?222')? r4=re.split('\d+','This?is?111?and?That?is?222',maxsplit=1)? print(r1) print(r2) print(r3) print(r4)

運(yùn)行結(jié)果:

re.sub函數(shù)

re.sub函數(shù)用于替換字符串中的匹配項(xiàng)。

re.sub(pattern, repl, string, count=0, flags=0)

pattern:正則中的模式字符串。

repl:替換的字符串,也可為一個(gè)函數(shù)。

string:要被查找替換的原始字符串。

count:模式匹配后替換的最大次數(shù),默認(rèn)0表示替換所有的匹配。

import?re? r='This?is?111?and?That?is?222' #?刪除字符串中的數(shù)字 r1=re.sub(r'\d+','',r) print(r1) #?刪除非數(shù)字的字符串? r2=re.sub(r'\D','',r) print(r2)

運(yùn)行結(jié)果:

到此這篇關(guān)于Python常用的正則表達(dá)式處理函數(shù)詳解的文章就介紹到這了,希望大家以后多多支持!

python有多少內(nèi)置函數(shù)

Python內(nèi)置函數(shù)有很多,為大家推薦5個(gè)神仙級(jí)的內(nèi)置函數(shù):

(1)Lambda函數(shù)

用于創(chuàng)建匿名函數(shù),即沒有名稱的函數(shù)。它只是一個(gè)表達(dá)式,函數(shù)體比def簡單很多。當(dāng)我們需要?jiǎng)?chuàng)建一個(gè)函數(shù)來執(zhí)行單個(gè)操作并且可以在一行中編寫時(shí),就可以用到匿名函數(shù)了。

Lamdba的主體是一個(gè)表達(dá)式,而不是一個(gè)代碼塊。僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去。

利用Lamdba函數(shù),往往可以將代碼簡化許多。

(2)Map函數(shù)

會(huì)將一個(gè)函數(shù)映射到一個(gè)輸入列表的所有元素上,比如我們先創(chuàng)建了一個(gè)函數(shù)來返回一個(gè)大寫的輸入單詞,然后將此函數(shù)應(yīng)有到列表colors中的所有元素。

我們還可以使用匿名函數(shù)lamdba來配合map函數(shù),這樣可以更加精簡。

(3)Reduce函數(shù)

當(dāng)需要對(duì)一個(gè)列表進(jìn)行一些計(jì)算并返回結(jié)果時(shí),reduce()是個(gè)非常有用的函數(shù)。舉個(gè)例子,當(dāng)需要計(jì)算一個(gè)整數(shù)列表所有元素的乘積時(shí),即可使用reduce函數(shù)實(shí)現(xiàn)。

它與函數(shù)的最大的區(qū)別就是,reduce()里的映射函數(shù)(function)接收兩個(gè)參數(shù),而map接收一個(gè)參數(shù)。

(4)enumerate函數(shù)

用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表、元組或字符串)組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在for循環(huán)當(dāng)中。

它的兩個(gè)參數(shù),一個(gè)是序列、迭代器或其他支持迭代對(duì)象;另一個(gè)是下標(biāo)起始位置,默認(rèn)情況從0開始,也可以自定義計(jì)數(shù)器的起始編號(hào)。

(5)Zip函數(shù)

用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表

當(dāng)我們使用zip()函數(shù)時(shí),如果各個(gè)迭代器的元素個(gè)數(shù)不一致,則返回列表長度與最短的對(duì)象相同。


標(biāo)題名稱:python最佳函數(shù) python求函數(shù)最值的方法
路徑分享:http://www.xueling.net.cn/article/hhppsd.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 国产日韩欧美另类 | 巨胸喷奶水视频WWW免费网站 | a级片视频网站 | 不卡无在线一区二区三区 | 蜜臀av一区二区三区 | 麻豆91在线视频 | 国产日本亚洲 | 午夜精品一区二区三区免费视频 | 黄色a级片视频 | 小sao货水好多真紧h无码视频 | yellow在线观看免费观看大全 | 国产精品高潮呻吟三区四区 | 一区二区三区在线观看欧美 | 男人操女人免费视频网站 | 青草在线视频 | 一区二区在线免费观看视频 | 精品久久久久久中文字幕一区二区 | 亚洲欧美又粗又长久久久 | 国产麻豆另类AV | 国产91xxx在线观看大全 | 国产精品情侣呻吟对白视频 | 500av导航大全精品 | 欧美亚洲另类久久综合二区 | 久久久久久毛片精品免费不卡 | 国产做a爰片久久毛片 | 日韩一区二区三区中文字幕 | 国内午夜国产精品小视频 | 日韩不卡手机视频在线观看 | 好看的一级毛片 | 五月婷婷久久综合 | 精品久久久久久中文字幕一区二区 | 久久人妻公开中文字幕 | 亚洲最新无码中文字幕久久 | 国产精品另类激情久久久免费 | 最近在线更新中文字幕3 | 亚洲精品入口a级 | 亚洲精品国产高清 | 亚洲乱码精品久久久 | 97久久超碰亚洲视觉盛宴 | 精品99视频 | 成人亚洲一区二区三区在线 |