Python精通函數(shù) 精通python可以干什么

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

01 Re概覽

專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)潼南免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了數(shù)千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

Re模塊是python的內(nèi)置模塊,提供了正則表達(dá)式在python中的所有用法,默認(rèn)安裝位置在python根目錄下的Lib文件夾(如 ..\Python\Python37\Lib)。主要提供了3大類(lèi)字符串操作方法:

字符查找/匹配

字符替換

字符分割

由于是面向字符串類(lèi)型的模塊,就不得不提到字符串編碼類(lèi)型。re模塊中,模式串和搜索串既可以是 Unicode 字符串 (常用str類(lèi)型) ,也可以是8位字節(jié)串 (bytes,2位16進(jìn)制數(shù)字,例如\xe5) , 但要求二者必須是同類(lèi)型字符串。

02 字符串查找/匹配

預(yù)編譯:compile

在介紹查找和匹配函數(shù)前,首先需要知道re的compile函數(shù),該函數(shù)可以將一個(gè)模式串編譯成正則表達(dá)式類(lèi)型,以便后續(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方法類(lèi)似,當(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ì)象類(lèi)型,當(dāng)無(wú)匹配對(duì)象時(shí),返回一個(gè)空列表。為了避免因同時(shí)返回大量匹配結(jié)果占用過(guò)多內(nèi)存,可以調(diào)用finditer函數(shù)返回一個(gè)迭代器類(lèi)型,其中每個(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類(lèi)函數(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)字符串的格式化替換(類(lèi)似字符串的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á)式的常用方法,每種方法都包括類(lèi)方法調(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 高階函數(shù)有哪些

什么是高階函數(shù)?

變量可以指向函數(shù),函數(shù)的參數(shù)可以接收變量,那么函數(shù)可以接收另一個(gè)函數(shù)作為參數(shù),這種函數(shù)稱(chēng)為高階函數(shù)。

python高階函數(shù)有哪些?

map函數(shù)

map()是python內(nèi)置的高階函數(shù),它接收兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是序列,map將傳入的函數(shù)依次作用到序列的每個(gè)元素,并且把結(jié)果作為新的列表返回。

filter函數(shù)

filter()同樣也是接收一個(gè)函數(shù)和一個(gè)序列,和map()不同的是,filter函數(shù)把傳入的函數(shù)依次作用于每個(gè)元素,然后返回返回值是True的元素。

reduce函數(shù)

reduce()把一個(gè)函數(shù)作用到一個(gè)序列上,這個(gè)函數(shù)必須接收兩個(gè)參數(shù),reduce把結(jié)果和序列的下一個(gè)元素做累積計(jì)算。

lambda函數(shù)

lambda()有時(shí)候傳參數(shù)時(shí)不需要顯示自定義的函數(shù),直接傳入匿名函數(shù)更方便;冒號(hào)前面的X,y表示函數(shù)參數(shù),匿名函數(shù)不需要擔(dān)心函數(shù)名的沖突,匿名函數(shù)也是一個(gè)函數(shù)對(duì)象,可以吧匿名函數(shù)賦值給一個(gè)變量,再利用變量來(lái)調(diào)用函數(shù),匿名函數(shù)也可以作為返回值返回。

sorted函數(shù)

sorted()作為python內(nèi)置高階函數(shù)之一,其功能是對(duì)序列(列表、元組、字典、集合、字符串)進(jìn)行排序。

小白如何系統(tǒng)學(xué)習(xí)python從入門(mén)到精通?

步驟如下:

一、python開(kāi)發(fā)基礎(chǔ)

明確這部分的學(xué)習(xí)目標(biāo):掌握Python基本語(yǔ)法規(guī)則及變量、邏輯控制、內(nèi)置數(shù)據(jù)結(jié)構(gòu)、文件操作、高級(jí)函數(shù)、模塊、常用標(biāo)準(zhǔn)庫(kù)模塊、函數(shù)、異常處理、MySQL使用、協(xié)程等知識(shí)點(diǎn)。

第二階段:web開(kāi)發(fā)

根據(jù)第一階段掌握的條件判斷,循環(huán),函數(shù),類(lèi)這些知識(shí)進(jìn)行;還要了解html、css的基礎(chǔ)知識(shí)。開(kāi)發(fā)網(wǎng)站,網(wǎng)頁(yè)基本都是用html和css寫(xiě)的,就算不會(huì)寫(xiě)前端,開(kāi)發(fā)不出來(lái)漂亮的頁(yè)面或網(wǎng)站,但也要知道html標(biāo)簽的相關(guān)知識(shí)。

第三階段:數(shù)據(jù)分析

數(shù)據(jù)分析這塊要我說(shuō)相關(guān)知識(shí)內(nèi)容,我還真分享不出寶貴的經(jīng)驗(yàn),主要還是靠自己去實(shí)踐去學(xué)習(xí),我就不做過(guò)多的講述了。主要還是從數(shù)據(jù)抓取、數(shù)據(jù)提取、數(shù)據(jù)存儲(chǔ)、爬蟲(chóng)并發(fā)、動(dòng)態(tài)網(wǎng)頁(yè)抓取、scrapy框架、分布式爬蟲(chóng)、爬蟲(chóng)攻防、數(shù)據(jù)結(jié)構(gòu)、算法等知識(shí)去學(xué)習(xí),才能步入數(shù)據(jù)分析這個(gè)廣闊的數(shù)據(jù)世界。

第四階段:高級(jí)進(jìn)階

這一階段就相當(dāng)于游戲里面的終極大BOSS,難度指數(shù)很高,你需要學(xué)習(xí)項(xiàng)目開(kāi)發(fā)流程、部署、高并發(fā)、性能調(diào)優(yōu)、Go語(yǔ)言基礎(chǔ)、區(qū)塊鏈入門(mén)等內(nèi)容。所以的知識(shí)都需要靈活運(yùn)用起來(lái),你會(huì)時(shí)不時(shí)遇到讓你傷腦筋的問(wèn)題。

這一階段學(xué)習(xí)最有效的方法就是實(shí)踐,不斷實(shí)踐、不斷發(fā)現(xiàn)問(wèn)題、不斷去解決問(wèn)題。

四件事幫你快速渡過(guò)入門(mén)期

多利用業(yè)余時(shí)間閱讀一些關(guān)于技術(shù)的文章,并總體掌握正在發(fā)生什么。通常,當(dāng)你陷入困境時(shí),意味著你對(duì)需要澄清的事情做出了不正確的假設(shè)。

學(xué)會(huì)利用搜索引擎。這一點(diǎn)很顯然是值得一提。在網(wǎng)上查找并詢(xún)問(wèn)有過(guò)這個(gè)問(wèn)題的人是一個(gè)非常重要的技能。Stackoverflow可以說(shuō)是互聯(lián)網(wǎng)上最好的網(wǎng)站。不要害怕在那里問(wèn)自己的問(wèn)題。通常,只要盡力正確地闡述你的問(wèn)題就OK了。

向你認(rèn)識(shí)的人請(qǐng)求幫助。通常,你或許已經(jīng)理解了技術(shù),而且有了問(wèn)題,但是你可能需要更高層次的上下文才能真正解開(kāi)謎團(tuán)。不要膽怯,大著膽子上前去問(wèn)吧。

不要鉆牛角尖。遇到難題,耗了半天時(shí)間還沒(méi)弄懂,就暫時(shí)跳過(guò)吧,當(dāng)知識(shí)積累到一定程度,回頭再進(jìn)行解決你會(huì)發(fā)現(xiàn)簡(jiǎn)單多了。不要一味的去鉆牛角尖,一定要解決,這樣會(huì)耗費(fèi)大量的時(shí)間與精力。

Python 幾個(gè)重要的內(nèi)置函數(shù)

在學(xué)習(xí)Python的過(guò)程中,有幾個(gè)比較重要的內(nèi)置函數(shù):help()函數(shù)、dir()函數(shù)、input()與raw_input()函數(shù)、print()函數(shù)、type()函數(shù)。

第一、help()函數(shù)

Help()函數(shù)的參數(shù)分為兩種:如果傳一個(gè)字符串做參數(shù)的話(huà),它會(huì)自動(dòng)搜索以這個(gè)字符串命名的模塊、方法等;如果傳入的是一個(gè)對(duì)象,就會(huì)顯示這個(gè)對(duì)象的類(lèi)型的幫助。比如輸入help(‘print’),它就會(huì)尋找以‘print’為名的模塊、類(lèi)等,找不到就會(huì)看到提示信息;而print在Python里是一個(gè)保留字,和pass、return同等,而非對(duì)象,所以help(print)也會(huì)報(bào)錯(cuò)。

第二、dir()函數(shù)

dir()函數(shù)返回任意對(duì)象的屬性和方法列表,包含模塊對(duì)象、函數(shù)對(duì)象、字符串對(duì)象、列表對(duì)象、字典對(duì)象等。盡管查找和導(dǎo)入模塊相對(duì)容易,但是記住每個(gè)模塊包含什么卻不是這么簡(jiǎn)單,您并不希望總是必須查看源代碼來(lái)找出答案。Python提供了一種方法,可以使用內(nèi)置的dir()函數(shù)來(lái)檢查模塊的內(nèi)容,當(dāng)你為dir()提供一個(gè)模塊名的時(shí)候,它返回模塊定義的屬性列表。dir()函數(shù)適用于所有對(duì)象的類(lèi)型,包含字符串、整數(shù)、列表、元組、字典、函數(shù)、定制類(lèi)、類(lèi)實(shí)例和類(lèi)方法。

第三、input與raw_input函數(shù)

都是用于讀取用戶(hù)輸入的,不同的是input()函數(shù)期望用戶(hù)輸入的是一個(gè)有效的表達(dá)式,而raw_input()函數(shù)是將用戶(hù)的輸入包裝成一個(gè)字符串。

第四、Print()函數(shù)

Print在Python3版本之間是作為Python語(yǔ)句使用的,在Python3里print是作為函數(shù)使用的。

第五、type()函數(shù)

Type()函數(shù)返回任意對(duì)象的數(shù)據(jù)類(lèi)型。在types模塊中列出了可能的數(shù)據(jù)類(lèi)型,這對(duì)于處理多種數(shù)據(jù)類(lèi)型的函數(shù)非常有用,它通過(guò)返回類(lèi)型對(duì)象來(lái)做到這一點(diǎn),可以將這個(gè)類(lèi)型對(duì)象與types模塊中定義類(lèi)型相比較。

當(dāng)前題目:Python精通函數(shù) 精通python可以干什么
新聞來(lái)源:http://muchs.cn/article34/hphspe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、微信小程序、ChatGPT、服務(wù)器托管、網(wǎng)站設(shè)計(jì)、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化