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中的上下文管理器和with语句的使用
Apr 17 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
Python 删除整个文本中的空格,并实现按行显示
Jul 24 Python
Python开发的十个小贴士和技巧及长常犯错误
Sep 27 Python
使用python进行波形及频谱绘制的方法
Jun 17 Python
python图的深度优先和广度优先算法实例分析
Oct 26 Python
python基于celery实现异步任务周期任务定时任务
Dec 30 Python
在Tensorflow中查看权重的实现
Jan 24 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
python mock测试的示例
Oct 19 Python
Python模拟键盘输入自动登录TGP
Nov 27 Python
python神经网络编程之手写数字识别
May 08 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
php4的session功能评述(一)
2006/10/09 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
scrapy爬虫完整实例
2018/01/25 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
python实现批量处理将图片粘贴到另一张图片上并保存
2019/12/12 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
html5开发之viewport使用
2013/10/17 HTML / CSS
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
农业大学毕业生的个人自我评价
2013/10/11 职场文书
新闻编辑求职信
2014/07/13 职场文书
夫妻婚内购房协议书
2014/10/05 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
技术支持岗位职责
2015/02/13 职场文书
后勤工作个人总结
2015/02/28 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang