Python 實(shí)用技巧之利用Shell通配符做字符串匹配
1、需求
當(dāng)工作在UNIX Shell下時(shí),我們想使用常見的通配符模式(即:.py,Dat[0-9].csv等)來對文本做匹配。
2、解決方案
fnmatch模塊提供了兩個(gè)函數(shù):fnmatch()
和fnmatchcase()
,可用來執(zhí)行這樣的匹配,使用起來非常簡單。
實(shí)例:
from fnmatch import fnmatch,fnmatchcase print(fnmatch('mark.txt','*.txt')) print(fnmatch('mark.txt','?ark.txt')) print(fnmatch('mark2018.txt','?ark201[0-9].txt'))
運(yùn)行結(jié)果:
True
True
True
一般來說,fnmatch()的大小寫匹配規(guī)則與底層文件相同,例如:
print(fnmatch('mark.txt','*.TXT'))
上面代碼,在Max下運(yùn)行為False,在Windows下運(yùn)行為True。
如果這個(gè)大小寫區(qū)別對我們很重要,我們就應(yīng)該使用fnmatchcase()。它會(huì)完全根據(jù)我們提供的大小寫方法來做匹配。
實(shí)例:
from fnmatch import fnmatch,fnmatchcase print(fnmatchcase('mark.txt','*.TXT'))
結(jié)果:
False
關(guān)于這些函數(shù),一個(gè)常被忽略的特性是它們在處理非文件名式的字符串時(shí)的潛在用途。
例如,
from fnmatch import fnmatchcase #假設(shè)有一組街道地址,就像這樣: address=[ '111 A 上海 SH', '112 B 上海 SH', '113 C 上海 SH', '124 D 北京 BJ', '138 E 北京 BJ', '145 F 北京 BJ', ] result=[addr for addr in address if fnmatchcase(addr,'1[1-3][1-5]*BJ')] print(result)
運(yùn)行結(jié)果:
['124 D 北京 BJ']
3、分析
fnmatch完成的匹配操作有點(diǎn)介于簡單的字符串方法和全功能的正則表達(dá)式之間。
如果實(shí)際上是想編寫匹配文件名的代碼,那應(yīng)該使用glob模塊來完成,后面會(huì)介紹到的。
總結(jié)
以上所述是小編給大家介紹的Python 實(shí)用技巧之利用Shell通配符做字符串匹配,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Python 中使用 Selenium 單擊網(wǎng)頁按鈕功能
Selenium是一個(gè)用于測試網(wǎng)站的自動(dòng)化測試工具,支持各種瀏覽器包括Chrome、Firefox、Safari等主流界面瀏覽器,同時(shí)也支持phantomJS無界面瀏覽器,本篇文章將介紹如何在 Python 中使用 selenium 單擊網(wǎng)頁上的按鈕,感興趣的朋友一起看看吧2023-11-11基于python3抓取pinpoint應(yīng)用信息入庫
這篇文章主要介紹了基于python3抓取pinpoint應(yīng)用信息入庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01探索Python內(nèi)置數(shù)據(jù)類型的精髓與應(yīng)用
本文探索Python內(nèi)置數(shù)據(jù)類型的精髓與應(yīng)用,包括字符串、列表、元組、字典和集合。通過深入了解它們的特性、操作和常見用法,讀者將能夠更好地利用這些數(shù)據(jù)類型解決實(shí)際問題。2023-09-09python json.dumps() json.dump()的區(qū)別詳解
這篇文章主要介紹了python json.dumps() json.dump()的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07PyTorch實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的搭建詳解
這篇文章主要為大家介紹了PyTorch實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的搭建詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05