Python 实用技巧之利用Shell通配符做字符串匹配
- 更新时间:2023-01-03 09:27:59
- 编辑:暨艾玲
1、需求
当工作在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通配符做字符串匹配,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
相关教程
-
Python字符串的15个基本操作(小结)
为网友们分享了关于Python的教程,这篇文章主要介绍了Python字符串的15个基本操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
发布时间:2022-11-28
-
python实现txt文本批量创建文件夹方法
这篇文章主要为大家详细介绍了python根据txt文本批量创建文件夹,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
发布时间:2019-06-07
-
python XlsxWriter模块创建aexcel表格的代码讲解
这篇文章主要介绍了关于python XlsxWriter模块创建aexcel表格,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
发布时间:2020-03-30
-
详解Python下opencv图像的阈值处理
这篇文章主要介绍了Python下opencv图像阈值处理的使用笔记,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
发布时间:2020-02-28
-
Python实现繁體转为简体的方法示例
给网友们整理关于Python的教程,这篇文章主要介绍了Python实现繁體转为简体的方法,涉及Python编码转换相关操作技巧,需要的朋友可以参考下
发布时间:2022-07-25
-
Python+MySQL随机试卷及答案生成程序的实力分析
这篇文章主要介绍了Python+MySQL随机试卷及答案生成程序的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
发布时间:2021-08-26
-
详解Python函数any()和all()的用法和区别
在本篇文章中我们给读者们详细介绍了关于Python中any()和all()的函数用法区别和详细用法,有兴趣的朋友们学习下。
发布时间:2018-09-14