cpu密集型程式:主要
正規表示式
作用:對資料的匹配/過濾
特點:強大,通用
所有的正則加上r字元一定沒毛病
使用:import re
match()函式作用:從頭開始匹配,失敗則返回
search()函式作用:從頭匹配到尾,成功返回物件,失敗往後搜尋,最終沒有匹配返回空
匹配結果物件 = re.match(r"正規表示式",資料)
匹配結果物件 = re.search(r"正規表示式",資料)
search
輸出結果 :結果物件.group()
沒有成功:成功:返回結果物件 失敗:往後搜尋,最終沒有匹配返回空
match
輸出結果 :結果物件.group()
沒有成功:成功:返回結果物件 失敗:為none
匹配乙個字元-元字元
. 字元 匹配除換行符之外的任意乙個字元
字元 匹配集合中的任意乙個字元
[a-z] 匹配字元範圍
[^] 禁止匹配集合中的任意乙個字元
\d 匹配0-9任意字元
\d 匹配任意乙個非數字字元
\s 匹配任意乙個空白字元
\s 匹配任意乙個非空白字元
\w 匹配數字 字母 下劃線任意乙個字元
\w 匹配任意乙個非單詞字元
匹配多個字元 - 量詞
匹配n次
匹配至少n次,最多m次
*號 匹配0次或者任意多次
+ 匹配至少一次
? 匹配0-1次,可有可無
匹配開始位置和結束位置
開始位置:r"^x" 要求以..開始
結束位置:r"x$" 要求以..結束
匿名分組:此時必須加r
目的:將資料從整體中提取出來
建立:r"(正則)"
獲取方式: 匹配結果物件.group(分組編號)
引用分組資料:在正則後續位置使用前面分組的資料
r '() \分組編號'
| 匹配左右表示式:或
() 匹配括號中 | 左右的任何乙個表示式
print(re.search("^\w@(qq|sina).com$" ,"[email protected]").group())
有名分組 命名分組
分組名字
建立:r"(?p《分組別名》正則)"
獲取資料:結果物件.group('分組名字')
引用:(?p = 分組名)
應用場景:在分組很多時,引用複雜,此時修改分組導致編號變化,匿名分組引用會失效
re高階模組
search 只查詢一次,返回匹配結果
findall 從資料中查詢制定規則的所有資料,返回值是包含所有結果的 列表
re.findall(r"",資料)--->[匹配結果,...]
sub 將匹配的資料進行替換
re.sub(r"\d+", "666" , "c=1 c=2 c=3",count = 1)
引數 一 二 三 count
將 引數三 中的符合 引數一 規則的資料替換成 引數二 count 確定替換次數,返回值為最終替換後的結果
注:引數二中不僅僅可以是直接的字串資料,
還可以是乙個函式名稱《函式引數 返回值要求為str型別》
def func(matchobj):
"""引數是包含了匹配結果的結果物件 返回值是替換後的資料"""
#將正則中匹配的數字構成+1
data = matchobj.group()
print(data)
data = 1 + int(data)
#返回值必須是str型別
return str(data)
篩選網頁資料
re.sub(r"\s|| " , "" , data)
split 匹配進行切割字串,返回列表
re.split(",|:",mystr,maxsplit=1)
正則條件 內容 次數
貪婪模式 與非貪婪模式
預設貪婪模式
非貪婪 在"*","?","+","" 後加?,使貪婪變為非貪婪
相對概念
前提條件:能否滿足整體正規表示式匹配 盡量貪婪
r字元:
對正則中的 '\' 自動加 '\' 進行轉義
python高階 多執行緒
1.1 獲取執行緒數 import threading import time def fun time.sleep 1 print hello t threading.thread target fun t.start print threading.enumerate while true le...
Python高階(多執行緒)
多執行緒結構 import threading def worker 子執行緒要執行的具體邏輯 函式 print threading t1 threading.current thread time.sleep 9 通過休眠模擬子執行緒非同步邏輯 print t1.getname new t thr...
Python高階 多執行緒 05 執行緒
併發 時間段內多個程式輪流執行 並行 同乙個時刻不同cpu同時執行 執行緒 程式執行中,執行 的乙個分支。每個執行至少都有乙個執行緒.執行緒是作業系統排程資源的基礎單位 1.建立 import threading 方法 thread group 執行緒組,目前只能使用none target 執行的目...