Python 实用技巧之利用Shell通配符做字符串匹配


Posted in Python onAugust 23, 2019

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 相关文章推荐
python中wx将图标显示在右下角的脚本代码
Mar 08 Python
Python学习笔记(二)基础语法
Jun 06 Python
Python 执行字符串表达式函数(eval exec execfile)
Aug 11 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
python实现人民币大写转换
Jun 20 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
Sep 14 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
python自动发微信监控报警
Sep 06 Python
Python aiohttp百万并发极限测试实例分析
Oct 26 Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 Python
Python使用pyenv实现多环境管理
Feb 05 Python
Python实现Excel自动分组合并单元格
Feb 22 Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 #Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 #Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 #Python
自定义django admin model表单提交的例子
Aug 23 #Python
django admin 自定义替换change页面模板的方法
Aug 23 #Python
解决python多行注释引发缩进错误的问题
Aug 23 #Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 #Python
You might like
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
php实现数字补零的方法总结
2018/09/12 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
浅析location.href跨窗口调用函数
2016/11/22 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
Bootstrap CSS布局之列表
2016/12/15 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
easy_install python包安装管理工具介绍
2013/02/10 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
django ajax json的实例代码
2018/05/29 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
pandas ix &iloc &loc的区别
2019/01/10 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
优秀大学生推荐信范文
2013/11/28 职场文书
西北政法大学自主招生自荐信
2014/01/29 职场文书
小学学校评估方案
2014/06/08 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
django学习之ajax post传参的2种格式实例
2021/05/14 Python