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 相关文章推荐
wxPython 入门教程
Oct 07 Python
跟老齐学Python之dict()的操作方法
Sep 24 Python
python连接oracle数据库实例
Oct 17 Python
python制作花瓣网美女图片爬虫
Oct 28 Python
基于Python的接口测试框架实例
Nov 04 Python
python代码实现ID3决策树算法
Dec 20 Python
django表单实现下拉框的示例讲解
May 29 Python
Django框架的使用教程路由请求响应的方法
Jul 03 Python
python将视频转换为全字符视频
Apr 26 Python
python中树与树的表示知识点总结
Sep 14 Python
Python使用Paramiko控制liunx第三方库
May 20 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 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
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
2020/12/09 Javascript
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
Python中对列表排序实例
2015/01/04 Python
python如何实现一个刷网页小程序
2018/11/27 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
酒店门卫岗位职责
2013/12/29 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
服装设计专业求职信
2014/06/16 职场文书
感谢信范文大全
2015/01/23 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
节约用水广告语60条
2019/11/14 职场文书
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL