python基礎知識學習第11天

2021-10-01 20:51:24 字數 1557 閱讀 4158

1. findall函式

>>> import re

>>> s='123abc456eabc789'

>>> re.findall(r』abc』,s)

結果:['abc', 'abc']

返回結果是乙個列表,中間存放的是符合規則的字串,如果沒有符合規則的字串被找到,就返回乙個空列表。

2. compile函式

>>> s='111,222,aaa,bbb,ccc333,444ddd123abc456eabc789'

>>> rule=r』\b\d+\b』

>>> compiled_rule=re.compile(rule)

>>> compiled_rule.findall(s)

結果:['111', '222']

直接使用findall ( rule , target )的方式來匹配字串,一次兩次沒什麼,如果是多次使用的話,由於正則引擎每次都要把規則解釋一遍,而規則的解釋又是相當費時間的,所以這樣的效率就很低了。如果要多次使用同一規則來進行匹配的話,可以使用re.compile函式來將規則預編譯,使用編譯過返回的regular

expression object或叫做pattern物件來進行查詢。

compile函式還可以指定一些規則標誌,來指定一些特殊選項,多個選項之間用 』|』(位或)連線起來。

i      ignorecase 忽略大小寫區別

m    multiline  多行匹配。在這個模式下』^』(代表字串開頭)和』$』(代表字串結尾)將能夠匹配多行的情況,成為行首和行尾標記。

>>> s=』123 456\n789 012\n345 678』

>>> rc=re.compile(r』^\d+』)    #匹配乙個位於開頭的數字,沒有使用m選項

>>> rc.findall(s)

['123']             #結果只能找到位於第乙個行首的』123』

>>> rcm=re.compile(r』^\d+』, re.m)       #使用 m 選項

>>> rcm.findall(s)

['123', '789', '345']  #找到了三個行首的數字

3. match函式與search函式

match( rule , targetstring [,flag] )

search( rule , targetstring [,flag] )

第乙個引數是正則規則,第二個是目標字串,第三個是選項(同compile函式的選項)

返回結果不是字串列表,而是乙個matchobject (如果匹配成功的話),通過操作這個matchobject,來得到更多的資訊;如果匹配不成功,它們則返回乙個nonetype。

所以,一般的使用規則是:

>>> m=re.match( rule , target )

>>> if m:                       #必需先判斷是否成功

dosomething

兩個函式的區別:

match從字串的開頭開始匹配,如果開頭位置沒有匹配成功,就算失敗;而search會跳過開頭,繼續向後尋找是否有匹配的字串

Python總結 基礎知識 11

裝飾器本身就是乙個函式,主要用於為函式新增額外功能。如插入日誌 效能測試等。from functools import wraps def log flag def decorate func wraps func def wrap args,kwargs try if flag func args...

Android學習(11) 基礎知識

1.兩個常見概念 sdk software development kit 軟體開發工具包 ndk native development kit android原生工具開發包 2.android系統架構3.android的兩個重要意義的版本 android2.3 號稱最穩定的版本,也是以前裝機量最大...

python基礎知識學習第13天

ps main tab鍵 逗號分隔值 comma separated values,csv,有時也稱為字元分隔值,因為分隔字元也可以不是逗號 其檔案以純文字形式儲存 資料 數字和文字 純文字意味著該檔案是乙個字串行,不含必須像二進位制數字那樣被解讀的資料。csv檔案由任意數目的記錄組成,記錄間以某種...