欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中正則表達式findall的用法實例

 更新時間:2022年09月02日 14:44:02   作者:LXiaYu123456789  
在寫著自動化測試的腳本時重新復習了一下正則表達式findall()方法,下面這篇文章主要給大家介紹了關于python中正則表達式findall用法的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

正則口徑:知道前后取中間,如果最后$結束

python中則這表達式的方法通常由re.match re.search re.findall

re.findall匹配的時候,會把結果放到list返回,如果沒有匹配到返回空list不會報錯

import re
 
s1=re.compile('\d+')
# 匹配數字
r1=s1.findall('sahduasu27bhsagd7236vbcsahg923')
 
print(r1)
 
s2=re.compile('\d+')
r2=re.findall(s2, 'gashgddsh32hjsagd3jh4hjk234jkhk213')
print (r2)
 
 
r3=re.findall('\d+', 'sjdjsk1232kdsjf324string')
print(r3)
# 執(zhí)行結果
# ['27', '7236', '923']
# ['32', '3', '4', '234', '213']
# ['1232', '324']

 示例及常用方式:

import re
 
a = "hfdsakjhabsdgfjhabhjgdjabhjgajbkdkjdhfkaab"
# 1.找出字符串中有多少個ab, 兩個字符挨著
r1= re.findall(r"ab", a)
print(r1)
 
 
# 繼續(xù)查找如ab, aab, aaab,aaaab這種,a可以重復,也就是匹配前面的a是1個或多個
# +是代表前面的字符出現1次或多次
 
r2= re.findall(r"a+b", a)
print(r2)
 
# *是代表匹配前面的字符出現0次或多次
 
r3= re.findall(r"a*b", a)
print(r3)
 
# 我們要匹配a和b之間有一個字符的,比如aab,abb,acb,adb都符合
 
# .就是匹配除 \n (換行符)以外的任意一個字符
 
r4= re.findall(r"a.b", a)
print(r4)
 
# 執(zhí)行結果:
# ['ab', 'ab', 'ab', 'ab']
# ['ab', 'ab', 'ab', 'aab']
# ['ab', 'ab', 'ab', 'b', 'aab']
# ['ajb', 'aab']

 貪婪與非貪婪:

import re
 
# 符號.* 貪婪,匹配從.*前面為開始到后面為結束的所有內容
a = "hfdsakjhabsdgfjhabhjgdjabhjgajbkdkjdhfkaabsdf"
r1= re.findall(r"a.*b", a)
print(r1)
 
# 符號.*? 非貪婪,遇到開始和結束就進行截取,因此截取多次符合的結果,中間沒有字符也會被截取
 
r2= re.findall(r"a.*?b", a)
print(r2)
 
# ['akjhabsdgfjhabhjgdjabhjgajbkdkjdhfkaab']
# ['akjhab', 'ab', 'ab', 'ajb', 'aab']
import re
 
# # 符號.* 貪婪,匹配從.*前面為開始到后面為結束的所有內容
a = "hfdsakjhabsdgfjhabhjgdjabhjgajbkdkjdhfkaabsdf"
r1= re.findall(r"hfdsak.*?jgdj", a)
print(r1)
 
r2= re.findall(r"hfdsak(.*?)jgdj", a)
print(r2)
# ['hfdsakjhabsdgfjhabhjgdj']
# ['jhabsdgfjhabh']
# 看到區(qū)別了么,就是取出來的數據是否帶頭尾

 re.S

前面匹配都是一整串沒有換行的情況,如果我們需要匹配的內容,中間剛好有換行了,那就匹配不到了。

import re
 
a = '''hfdsakjhabsdgfjhabhjgdj
abhjgajbkdkjdhfkaabsdf'''
r1= re.findall(r"hfdsak.*?kjdh", a)
print(r1)
# []
r2= re.findall(r"hfdsak(.*?)jgdj", a,flags=re.S)
print(r2)
# ['jhabsdgfjhabh']

正則表達式可以包含一些可選標志修飾符來控制匹配的模式。修飾符被指定為一個可選的標志。

修飾符描述
re.I使匹配對大小寫不敏感
re.L做本地化識別(locale-aware)匹配
re.M多行匹配,影響 ^ 和 $
re.S使 . 匹配包括換行在內的所有字符
re.U根據Unicode字符集解析字符。這個標志影響 \w, \W, \b, \B.
re.X該標志通過給予你更靈活的格式以便你將正則表達式寫得更易于理解。

多個標志可以通過按位 OR(|) 它們來指定。如 re.I | re.M 被設置成 I 和 M 標志

補充:實戰(zhàn)案例

如果上面的函數和參數含義都已經掌握了,還需要進一步通過案例加強理解,接下來舉例說明上面的三個函數:

# 導入用于正則表達式的re模塊
import re

# 取出字符串string8中所有的天氣狀態(tài)
string8 = "{ymd:'2018-01-01',tianqi:'晴',aqiInfo:'輕度污染'},{ymd:'2018-01-02',tianqi:'陰~小雨',aqiInfo:'優(yōu)'},{ymd:'2018-01-03',tianqi:'小雨~中雨',aqiInfo:'優(yōu)'},{ymd:'2018-01-04',tianqi:'中雨~小雨',aqiInfo:'優(yōu)'}"
# 基于正則表達式使用findall函數
print(re.findall("tianqi:'(.*?)'", string8))

# 取出string9中所有含O字母的單詞
string9  = 'Together, we discovered that a free market only thrives when there are rules to ensure competition and fair play, Our celebration of initiative and enterprise'
# 基于正則表達式使用findall函數
print(re.findall('w*ow*',string9, flags = re.I))

# 將string10中的標點符號、數字和字母刪除
string10 = '據悉,這次發(fā)運的4臺蒸汽冷凝罐屬于國際熱核聚變實驗堆(ITER)項目的核二級壓力設備,先后完成了壓力試驗、真空試驗、氦氣檢漏試驗、千斤頂試驗、吊耳載荷試驗、疊裝試驗等驗收試驗。'
# 基于正則表達式使用sub函數
print(re.sub('[,。、a-zA-Z0-9()]','',string10))

# 將string11中的每個子部分內容分割開
string11 = '2室2廳 | 101.62平 | 低區(qū)/7層 | 朝南 
 上海未來 - 浦東 - 金楊 - 2005年建'
# 基于正則表達式使用split函數
split = re.split('[-|
]', string11)
print(split)
# 分割結果的清洗
split_strip = [i.strip() for i in split]
print(split_strip)

out:
['晴', '陰~小雨', '小雨~中雨', '中雨~小雨']
['Together', 'discovered', 'only', 'to', 'competition', 'Our', 'celebration', 'of']
據悉這次發(fā)運的臺蒸汽冷凝罐屬于國際熱核聚變實驗堆項目的核二級壓力設備先后完成了壓力試驗真空試驗氦氣檢漏試驗千斤頂試驗吊耳載荷試驗疊裝試驗等驗收試驗
['2室2廳 ', ' 101.62平 ', ' 低區(qū)/7層 ', ' 朝南 ', ' 上海未來 ', ' 浦東 ', ' 金楊 ', ' 2005年建']
['2室2廳', '101.62平', '低區(qū)/7層', '朝南', '上海未來', '浦東', '金楊', '2005年建']

如上結果所示:

第一個例子中通過正則表達式"tianqi:’(.*?)’“實現目標數據的獲取,如果不使用括號的話,就會產生類似"tianqi:‘晴’”, "tianqi:‘陰~小雨’"這樣的值,所以,加上括號就是為了分組,且僅返回組中的內容;

第二個例子并沒有將正則表達式寫入圓括號,如果寫上圓括號也是返回一樣的結果,所以findall就是用來返回滿足匹配條件的列表值,如果有括號,就僅返回括號內的匹配值;

第三個例子使用替換的方法,將所有的標點符號換為空字符,進而實現刪除的效果;

第四個例子是對字符串的分割,如果直接按照正則 ‘[,。、a-zA-Z0-9()]’ 分割的話,返回的結果中包含空字符,如 ‘2室2廳’ 后面就有一個空字符。為了刪除列表中每個元素的首尾空字符,使用了列表表達式,并且結合字符串的strip方法完成空字符的壓縮。

總結

到此這篇關于python中正則表達式findall用法的文章就介紹到這了,更多相關python正則表達式findall用法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python辦公自動化之定時郵件提醒和音視頻文件處理

    Python辦公自動化之定時郵件提醒和音視頻文件處理

    這篇文章主要為大家詳細介紹了Python辦公自動化中定時郵件提醒和音視頻文件處理的相關知識,文中的示例代碼講解詳細,需要的小伙伴可以了解下
    2023-12-12
  • Python編程產生非均勻隨機數的幾種方法代碼分享

    Python編程產生非均勻隨機數的幾種方法代碼分享

    這篇文章主要介紹了Python編程產生非均勻隨機數的幾種方法代碼分享,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Python PyQt5實現拖放效果的原理詳解

    Python PyQt5實現拖放效果的原理詳解

    這篇文章主要為大家詳細介紹了Python PyQt5中拖放效果的實現原理與實現代碼,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-11-11
  • Mac中PyCharm配置Anaconda環(huán)境的方法

    Mac中PyCharm配置Anaconda環(huán)境的方法

    這篇文章主要介紹了Mac中PyCharm配置Anaconda環(huán)境的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • python的scrapy框架之Pipeline文件的用法詳解

    python的scrapy框架之Pipeline文件的用法詳解

    這篇文章主要介紹了python的scrapy框架之Pipeline文件的用法詳解,Pipeline是一個獨立的模塊,用于處理從Spider中提取的Item對象,實現對數據的進一步處理、存儲和清洗等操作,下面將詳細介紹Scrapy框架中Pipeline的用法,需要的朋友可以參考下
    2023-10-10
  • 在python中求分布函數相關的包實例

    在python中求分布函數相關的包實例

    這篇文章主要介紹了在python中求分布函數相關的包實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Tensorflow 同時載入多個模型的實例講解

    Tensorflow 同時載入多個模型的實例講解

    今天小編就為大家分享一篇Tensorflow 同時載入多個模型的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • pandas數值計算與排序方法

    pandas數值計算與排序方法

    下面小編就為大家分享一篇pandas數值計算與排序方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python爬蟲實現獲取動態(tài)gif格式搞笑圖片的方法示例

    Python爬蟲實現獲取動態(tài)gif格式搞笑圖片的方法示例

    這篇文章主要介紹了Python爬蟲實現獲取動態(tài)gif格式搞笑圖片的方法,結合實例形式分析了Python針對gif格式圖片的爬取、下載等相關操作技巧,需要的朋友可以參考下
    2018-12-12
  • 分享10提高?Python?代碼的可讀性的技巧

    分享10提高?Python?代碼的可讀性的技巧

    這篇文章主要介紹了分享10提高?Python?代碼的可讀性的技巧,本文介紹20個常用的Python技巧來提高代碼的可讀性,并能幫助你節(jié)省大量時間,下面的技巧將在你的日常編碼練習中非常實用,需要的朋友可以參考一下
    2022-03-03

最新評論