2020 11 11Python正則學習筆記

2021-10-10 11:08:12 字數 2077 閱讀 7577

①import re      匯入正規表示式的模組    

②findall:     re.findall('字串',變數)   返回乙個列表 ,可通過:判斷列表長度(用 len() )是否大於零判斷是否含有所找字串;     正規表示式側重在規則(靈魂就在規則,只是單純的找指定字串(常量字串)並沒有意義(python內建函式就可完成這些功能)

findall :  re.findall('\d',a)  尋找a中所有的數字,並以列表的形式返回。

正規表示式 由 普通字元 和 元字元 組成,前者就是具體的字元,我們學的是後者

\d: 返回所有非數字字元組成的列表      -----正規表示式的元字元非常多,可在用的時候查閱手冊~

重點是 正則匹配的規則

④字符集特點: 1>出現在 裡的是或關係         2>   ^表示非        例:[^cdf]表示 不是c或d或f的字元               3>  c-f :從c到f的字元     

4> \d  0-9  等同於  [0-9]   ;     \d  非數字  等同於 [^0-9]  ; \w 字母下劃線(單詞字元)   等同於 [a-za-z0-9_]  ;\w  \w的非,包括空格,&,\n, \r,\t ; \s:匹配空格,回車,製表,換行 (空白字元)  \s : \s的非;   . 匹配除換行符之外其他所有字元

⑤數量詞:  正則匹配,本質是乙個字元乙個字元匹配的,只能匹配單一字元;但是可以通過規則匹配多個字元

若想匹配多個,用 {}  ----   {}中的數字是長度 例:只匹配長度為3;長度從3到6的單詞

上述不定長單詞獲取,與 「貪婪」和「非貪婪」有關,python預設情況下是「貪婪」模式------正則匹配預設盡可能多的尋找符合條件的字元, 若是想以非貪婪模式匹配,須在{}後加?,  例如?執行結果幾乎只和3個一組一致?

⑥數量詞小結:1> {}  指定數量或數量範圍        2> * 匹配0次或者無數次   例: n* 匹配0個或者無數個n      3> +  匹配一次或者無限多次     4> ? 匹配0次或者1次(ps: 只匹配前幾個字元,若是在滿足1個的情況下後邊還有,會返回匹配到乙個的結果------?可用於去重操作~     5>注意區分 貪婪模式下的 ? 和數量詞中的 ?

⑦邊界匹配---完整匹配整個字串 : 加上前後邊界符: 前加^  後加 $       例:判斷字串s是否是長度為4-8的整數  re.findall('^\d$',s)             ^從字串的開始進行匹配          $從字串的末尾開始匹配   ps:^ 和 $ 可單獨用

⑧判斷字串中含有多少重複單詞(字元組合): 組:用()括起來的內容是乙個組   每個字元之間是且關係  ps:每個字元之間是或關係

⑨findall第三個引數---模式         re.i  忽略大小寫,re.s  點號. 匹配換行符(預設不匹配換行符) ,第三個引數可以由多個模式,不同模式之間用 | 連線 (此處是 且 關係,而不是常見的 或 關係)

⑩re.sub  正則替換   函式引數列表:

count:預設 0 匹配所有的pattern,其他數字含義:匹配並替換的最大次數;

r1=re.sub('c#','c++',s)  作用 同python的內建函式replace (r2=s.replace('c#','c++') , ps:字串是不可變的,replace後要用新的字串接收~

⑩① sub的強大之處在於,第二個引數可以是函式!

ps: 函式的返回值必須是 字串

⑩②  search:搜尋整個字串,直到找到第乙個匹配的結果; 返回的結果不是列表,而是乙個物件,需要用group() 返回字串 或者 span返回 位置(a,b)a為所找字串的上乙個字元所在數字,b為所找字串最有乙個字元位置

match:從字串首字母開始進行匹配

⑩③ group()   傳入0,返回全部匹配的字元;傳入1,返回第乙個分組的字串;傳入2,返回第二個分組的字串;可同時傳入 0,1,2  即 r.group(0,1,2)

ps:search的返回結果可用group()

2020.11.11

2020 11 11 Python列表和元組

11月11日筆記 2 序列中儲存的是整數物件的位址,python中常用的字串,列表,元組,字典,集合 概念 用於儲存任意數目,任意型別的資料集合 list.insert index,x 在列表指定位置index處插入元素x list.index x 訪問元素 len list 列表長度 list.p...

Python正態性檢驗

在對資料建模前,很多時候我們需要對資料做正態性檢驗,進而通過檢驗結果確定下一步的分析方案。下面介紹 python 中常用的幾種正態性檢驗方法 kstest 是乙個很強大的檢驗模組,除了正態性檢驗,還能檢驗 scipy.stats 中的其他資料分布型別 對於正態性檢驗,我們只需要手動設定三個引數即可 ...

DELPHIER,正轉向PYTHON了

1 現在是雲計算時代了,需要學習一門適應該時代的語言,研究了很久,python是最佳選擇,排除了php,perl,ruby等,至於go語言,暫時只處於觀察中。python目前非常火,國際大公司有nasa,google,youtube,dropbox等,國內豆瓣都是用python的典型案例,炙手可熱的...