最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中正則表達(dá)式findall的用法實(shí)例

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

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

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

re.findall匹配的時(shí)候,會把結(jié)果放到list返回,如果沒有匹配到返回空list不會報(bào)錯(cuò)

import re
 
s1=re.compile('\d+')
# 匹配數(shù)字
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í)行結(jié)果
# ['27', '7236', '923']
# ['32', '3', '4', '234', '213']
# ['1232', '324']

 示例及常用方式:

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

 貪婪與非貪婪:

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

 re.S

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

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']

正則表達(dá)式可以包含一些可選標(biāo)志修飾符來控制匹配的模式。修飾符被指定為一個(gè)可選的標(biāo)志。

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

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

補(bǔ)充:實(shí)戰(zhàn)案例

如果上面的函數(shù)和參數(shù)含義都已經(jīng)掌握了,還需要進(jìn)一步通過案例加強(qiáng)理解,接下來舉例說明上面的三個(gè)函數(shù):

# 導(dǎo)入用于正則表達(dá)式的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)'}"
# 基于正則表達(dá)式使用findall函數(shù)
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'
# 基于正則表達(dá)式使用findall函數(shù)
print(re.findall('w*ow*',string9, flags = re.I))

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

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

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

如上結(jié)果所示:

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

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

第三個(gè)例子使用替換的方法,將所有的標(biāo)點(diǎn)符號換為空字符,進(jìn)而實(shí)現(xiàn)刪除的效果;

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

總結(jié)

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

相關(guān)文章

  • 分享4個(gè)方便且好用的Python自動(dòng)化腳本

    分享4個(gè)方便且好用的Python自動(dòng)化腳本

    自動(dòng)化測試是把以人為驅(qū)動(dòng)的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程,直白的就是為了節(jié)省人力、時(shí)間或硬件資源,提高測試效率,這篇文章主要給大家分享介紹了3個(gè)方便且好用的Python自動(dòng)化腳本,需要的朋友可以參考下
    2022-02-02
  • Python自動(dòng)化處理手機(jī)驗(yàn)證碼

    Python自動(dòng)化處理手機(jī)驗(yàn)證碼

    手機(jī)驗(yàn)證碼是一種常見的身份驗(yàn)證手段,廣泛應(yīng)用于用戶注冊、登錄、交易確認(rèn)等場景,下面我們來看看如何使用Python自動(dòng)化處理手機(jī)驗(yàn)證碼吧
    2025-02-02
  • Python+Opencv實(shí)現(xiàn)圖像匹配功能(模板匹配)

    Python+Opencv實(shí)現(xiàn)圖像匹配功能(模板匹配)

    這篇文章主要為大家詳細(xì)介紹了Python+Opencv實(shí)現(xiàn)圖像匹配功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Python面向?qū)ο蟪绦蛟O(shè)計(jì)類的封裝與繼承用法示例

    Python面向?qū)ο蟪绦蛟O(shè)計(jì)類的封裝與繼承用法示例

    這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)類的封裝與繼承用法,結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類的封裝、繼承相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-04-04
  • 使用python tkinter實(shí)現(xiàn)各種個(gè)樣的撩妹鼠標(biāo)拖尾效果

    使用python tkinter實(shí)現(xiàn)各種個(gè)樣的撩妹鼠標(biāo)拖尾效果

    這篇文章主要介紹了使用python tkinter實(shí)現(xiàn)各種個(gè)樣的撩妹鼠標(biāo)拖尾效果,本文通過實(shí)例代碼,給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • python二分查找搜索算法的多種實(shí)現(xiàn)方法

    python二分查找搜索算法的多種實(shí)現(xiàn)方法

    二分查找,也稱折半查找,是一種效率較高的查找方法,本文主要介紹了python二分查找搜索算法的多種實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • 使用Arcgis做路徑規(guī)劃方式(使用python腳本調(diào)用)

    使用Arcgis做路徑規(guī)劃方式(使用python腳本調(diào)用)

    本文介紹了如何使用ArcGIS和Python來解決鐵路路徑規(guī)劃問題,通過配置ArcGIS、導(dǎo)入路網(wǎng)數(shù)據(jù)和列車行駛點(diǎn)數(shù)據(jù)、處理線要素、構(gòu)建拓?fù)浣Y(jié)構(gòu),可以使用Network?Analyst工具進(jìn)行路徑分析,最后,通過Python腳本自動(dòng)化處理大量數(shù)據(jù),生成最優(yōu)路徑
    2024-12-12
  • Python使用剪切板的方法

    Python使用剪切板的方法

    這篇文章主要為大家詳細(xì)介紹了Python使用剪切板的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Python如何實(shí)現(xiàn)守護(hù)進(jìn)程的方法示例

    Python如何實(shí)現(xiàn)守護(hù)進(jìn)程的方法示例

    護(hù)進(jìn)程:通常被定義為一個(gè)后臺進(jìn)程,而且它不屬于任何一個(gè)終端會話(terminal session)。許多系統(tǒng)服務(wù)由守護(hù)程序?qū)嵤?;如網(wǎng)絡(luò)服務(wù),打印等。 下面這篇文章給大家分享了Python是如何實(shí)現(xiàn)守護(hù)進(jìn)程的方法示例,需要的朋友可以參考借鑒。
    2017-02-02
  • Python中%r和%s的詳解及區(qū)別

    Python中%r和%s的詳解及區(qū)別

    這篇文章主要介紹了Python中%r和%s的詳解及區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評論

颍上县| 托克托县| 平山县| 繁峙县| 达孜县| 中西区| 东台市| 柏乡县| 永登县| 洞口县| 岳池县| 宝兴县| 洛南县| 镇宁| 繁峙县| 合江县| 温州市| 永泰县| 叶城县| 汉中市| 桦川县| 广西| 松潘县| 云龙县| 贵南县| 石首市| 温泉县| 昌宁县| 阿拉善右旗| 中江县| 察雅县| 贺州市| 吉安县| 民县| 萨迦县| 青川县| 寻乌县| 富锦市| 靖江市| 扎兰屯市| 广昌县|