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中的MySQLdb模块添加超时功能的教程
May 05 Python
浅谈Django REST Framework限速
Dec 12 Python
Python3.6.0+opencv3.3.0人脸检测示例
May 25 Python
Python使用pylab库实现绘制直方图功能示例
Jun 01 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
Sep 02 Python
django使用xadmin的全局配置详解
Nov 15 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 Python
使用wxpy实现自动发送微信消息功能
Feb 28 Python
关于python 的legend图例,参数使用说明
Apr 17 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 07 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 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导出oracle库的php代码
2009/04/20 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
PHP中设置时区方法小结
2012/06/03 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
2020/02/11 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
python爬虫之百度API调用方法
2017/06/11 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
Python中的引用知识点总结
2019/05/20 Python
python3.7环境下安装Anaconda的教程图解
2019/09/10 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
python文件路径操作方法总结
2020/12/21 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
.net笔试题
2014/03/03 面试题
银行自荐信范文
2013/10/07 职场文书
光盘行动倡议书
2014/02/02 职场文书
电子商务实训报告总结
2014/11/05 职场文书
写给医生的感谢信
2015/01/22 职场文书
国庆阅兵观后感
2015/06/15 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript
小程序自定义轮播图圆点组件
2022/06/25 Javascript