精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網站建設資訊

NEWS

網站建設資訊

python函數知識的簡單介紹

一文秒懂python正則表達式常用函數

01 Re概覽

創新互聯是一家專業提供忠縣企業網站建設,專注與網站設計、成都網站建設、成都h5網站建設、小程序制作等業務。10年已為忠縣眾多企業、政府機構等服務。創新互聯專業的建站公司優惠進行中。

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

字符查找/匹配

字符替換

字符分割

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

02 字符串查找/匹配

預編譯:compile

在介紹查找和匹配函數前,首先需要知道re的compile函數,該函數可以將一個模式串編譯成正則表達式類型,以便后續快速匹配和復用

import?re pattern?=?re.compile(r'[a-z]{2,5}') type(pattern)?#re.Pattern

此例創建了一個正則表達式式對象 (re.pattern) ,命名為pattern,用于匹配2-5位小寫字母的模式串。后續在使用其他正則表達式函數時,即可使用pattern進行方法調用。

匹配:match

match函數用于從文本串的起始位置開始匹配,若匹配成功,則返回相應的匹配對象,此時可調用group()方法返回匹配結果,也可用span()方法返回匹配起止下標區間;否則返回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函數還有一個變形函數fullmatch,當且僅當模式串與文本串剛好全部匹配時,返回一個匹配對象,否則返回None

搜索:search

match只提供了從文本串起始位置匹配的結果,如果想從任意位置匹配,則可調用search方法,與match方法類似,當任意位置匹配成功,則立即返回一個匹配對象,也可調用span()方法獲取起止區間、調用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均用于匹配單個結果,唯一區別在于前者是從起始位置開始匹配,而后者從任意位置匹配,匹配成功則返回一個match對象。

全搜索:findall/finditer

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

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返回的是一個列表對象類型,當無匹配對象時,返回一個空列表。為了避免因同時返回大量匹配結果占用過多內存,可以調用finditer函數返回一個迭代器類型,其中每個迭代元素是一個match對象,可繼續調用group和span方法獲取相應結果

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 """

當匹配模式串較為簡單或者僅需單詞調用時,上述所有方法也可直接調用re類函數,而無需事先編譯。此時各方法的第一個參數為模式串。

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

當需要對文本串進行條件替換時,可調用re.sub實現 (當然也可先編譯后再用調用實例方法) ,相應參數分別為模式串、替換格式、文本串,還可以通過增加缺省參數限定替換次數和匹配模式。通過在模式串進行分組,可實現字符串的格式化替換(類似字符串的format方法),以實現特定任務。

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的一個變形方法是re.subn,區別是返回一個2元素的元組,其中第一個元素為替換結果,第二個為替換次數

import?re text?=?'today?is?2020-03-05' print(re.subn('-',?'',?text))?#('today?is?20200305',?2)

分割:split

還可以調用正則表達式實現字符串的特定分割,相當于.split()方法的一個加強版,實現特定模式的分割,返回一個切割后的結果列表

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 總結

python中的re模塊提供了正則表達式的常用方法,每種方法都包括類方法調用(如re.match)或模式串的實例調用(pattern.match)2種形式

常用的匹配函數:match/fullmatch

常用的搜索函數:search/findall/finditer

常用的替換函數:sub/subn

常用的切割函數:split

還有其他很多方法,但不是很常用,具體可參考官方文檔

另外,python還有第三方正則表達式庫regex可供選擇

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

python中函數包括

1. print()函數:打印字符串

2. raw_input()函數:從用戶鍵盤捕獲字符

3. len()函數:計算字符長度

4. format(12.3654,'6.2f'/'0.3%')函數:實現格式化輸出

5. type()函數:查詢對象的類型

6. int()函數、float()函數、str()函數等:類型的轉化函數

7. id()函數:獲取對象的內存地址

8. help()函數:Python的幫助函數

9. s.islower()函數:判斷字符小寫

10. s.sppace()函數:判斷是否為空格

11. str.replace()函數:替換字符

12. import()函數:引進庫

13. math.sin()函數:sin()函數

14. math.pow()函數:計算次方函數

15. 3**4: 3的4次方

16. pow(3,4)函數:3的4次方

17. os.getcwd()函數:獲取當前工作目錄

18. listdir()函數:顯示當前目錄下的文件

19. socket.gethostbyname()函數:獲得某主機的IP地址

20. urllib.urlopen(url).read():打開網絡內容并存儲

21. open().write()函數:寫入文件

22. webbrowser.open_new_tab()函數:新建標簽并使用瀏覽器打開指定的網頁

23. def function_name(parameters):自定義函數

24. time.sleep()函數:停止一段時間

25. random.randint()函數:產生隨機數

python有多少內置函數

Python內置函數有很多,為大家推薦5個神仙級的內置函數:

(1)Lambda函數

用于創建匿名函數,即沒有名稱的函數。它只是一個表達式,函數體比def簡單很多。當我們需要創建一個函數來執行單個操作并且可以在一行中編寫時,就可以用到匿名函數了。

Lamdba的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。

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

(2)Map函數

會將一個函數映射到一個輸入列表的所有元素上,比如我們先創建了一個函數來返回一個大寫的輸入單詞,然后將此函數應有到列表colors中的所有元素。

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

(3)Reduce函數

當需要對一個列表進行一些計算并返回結果時,reduce()是個非常有用的函數。舉個例子,當需要計算一個整數列表所有元素的乘積時,即可使用reduce函數實現。

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

(4)enumerate函數

用于將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在for循環當中。

它的兩個參數,一個是序列、迭代器或其他支持迭代對象;另一個是下標起始位置,默認情況從0開始,也可以自定義計數器的起始編號。

(5)Zip函數

用于將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表

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


本文名稱:python函數知識的簡單介紹
標題網址:http://m.jcarcd.cn/article/hpsecs.html
主站蜘蛛池模板: 日本在线视频一区 | 91高清影视 | 国产日韩网站 | 国产最美特| 成人亚洲欧美 | 日韩欧美色射高清 | 日韩午夜伦 | 日本黄段在线免费看 | 人兽免费新网址 | 精品欧乱仑在线 | 91精品一区福利 | 国产乱伦精品 | 国产女人成人精品视 | 国产91精品福利 | 日韩一级在线视频 | 精品日韩成人欧美 | 国产人妖兮 | 日本中文字幕第 | 成人播放日韩在线观 | 精品大全中文字幕 | 精品动漫国 | 国产视频二区 | 国产精品在线观看 | 伦理一国产A级 | 国产情侣自拍小视频 | 中文字幕无线精品 | 国产精品+日 | 精品热亚洲一级 | 韩剧大全 | 91夏晴子免费福利 | 乱子伦视频 | 日韩轮流片福利 | 欧美一级性爱视屏 | 国产精品亚洲给色区 | 欧美小视频在线 | 国产精品精品国 | 成人影视福利 | 国产巨作在线无遮 | 欧美自拍无毒不卡 | 97中文人 | 国产精品午夜 |