重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍了Python中如何使用Shell通配符做字符串匹配,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联公司主要从事做网站、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务兰州,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:135182197921、需求
当工作在UNIX Shell下时,我们想使用常见的通配符模式(即:.py,Dat[0-9].csv等)来对文本做匹配。
2、解决方案
fnmatch模块提供了两个函数:fnmatch()
和fnmatchcase()
,可用来执行这样的匹配,使用起来非常简单。
实例:
from fnmatch import fnmatch,fnmatchcase print(fnmatch('mark.txt','*.txt')) print(fnmatch('mark.txt','?ark.txt')) print(fnmatch('mark2018.txt','?ark201[0-9].txt'))
运行结果:
True
True
True
一般来说,fnmatch()的大小写匹配规则与底层文件相同,例如:
print(fnmatch('mark.txt','*.TXT'))
上面代码,在Max下运行为False,在Windows下运行为True。
如果这个大小写区别对我们很重要,我们就应该使用fnmatchcase()。它会完全根据我们提供的大小写方法来做匹配。
实例:
from fnmatch import fnmatch,fnmatchcase print(fnmatchcase('mark.txt','*.TXT'))
结果:
False
关于这些函数,一个常被忽略的特性是它们在处理非文件名式的字符串时的潜在用途。
例如,
from fnmatch import fnmatchcase #假设有一组街道地址,就像这样: 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)
运行结果:
['124 D 北京 BJ']
3、分析
fnmatch完成的匹配操作有点介于简单的字符串方法和全功能的正则表达式之间。
如果实际上是想编写匹配文件名的代码,那应该使用glob模块来完成。
感谢你能够认真阅读完这篇文章,希望小编分享的“Python中如何使用Shell通配符做字符串匹配”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!