Python 實(shí)用技巧之利用Shell通配符做字符串匹配
1、需求
當(dāng)工作在UNIX Shell下時(shí),我們想使用常見(jiàn)的通配符模式(即:.py,Dat[0-9].csv等)來(lái)對(duì)文本做匹配。
2、解決方案
fnmatch模塊提供了兩個(gè)函數(shù):fnmatch()
和fnmatchcase()
,可用來(lái)執(zhí)行這樣的匹配,使用起來(lái)非常簡(jiǎn)單。
實(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
一般來(lái)說(shuō),fnmatch()的大小寫(xiě)匹配規(guī)則與底層文件相同,例如:
print(fnmatch('mark.txt','*.TXT'))
上面代碼,在Max下運(yùn)行為False,在Windows下運(yùn)行為T(mén)rue。
如果這個(gè)大小寫(xiě)區(qū)別對(duì)我們很重要,我們就應(yīng)該使用fnmatchcase()。它會(huì)完全根據(jù)我們提供的大小寫(xiě)方法來(lái)做匹配。
實(shí)例:
from fnmatch import fnmatch,fnmatchcase print(fnmatchcase('mark.txt','*.TXT'))
結(jié)果:
False
關(guān)于這些函數(shù),一個(gè)常被忽略的特性是它們?cè)谔幚矸俏募降淖址畷r(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)介于簡(jiǎn)單的字符串方法和全功能的正則表達(dá)式之間。
如果實(shí)際上是想編寫(xiě)匹配文件名的代碼,那應(yīng)該使用glob模塊來(lái)完成,后面會(huì)介紹到的。
總結(jié)
以上所述是小編給大家介紹的Python 實(shí)用技巧之利用Shell通配符做字符串匹配,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Python 中使用 Selenium 單擊網(wǎng)頁(yè)按鈕功能
Selenium是一個(gè)用于測(cè)試網(wǎng)站的自動(dòng)化測(cè)試工具,支持各種瀏覽器包括Chrome、Firefox、Safari等主流界面瀏覽器,同時(shí)也支持phantomJS無(wú)界面瀏覽器,本篇文章將介紹如何在 Python 中使用 selenium 單擊網(wǎng)頁(yè)上的按鈕,感興趣的朋友一起看看吧2023-11-11基于python3抓取pinpoint應(yīng)用信息入庫(kù)
這篇文章主要介紹了基于python3抓取pinpoint應(yīng)用信息入庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01探索Python內(nèi)置數(shù)據(jù)類(lèi)型的精髓與應(yīng)用
本文探索Python內(nèi)置數(shù)據(jù)類(lèi)型的精髓與應(yīng)用,包括字符串、列表、元組、字典和集合。通過(guò)深入了解它們的特性、操作和常見(jiàn)用法,讀者將能夠更好地利用這些數(shù)據(jù)類(lèi)型解決實(shí)際問(wèn)題。2023-09-09python json.dumps() json.dump()的區(qū)別詳解
這篇文章主要介紹了python json.dumps() json.dump()的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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