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中for循环详解
Jan 17 Python
Python3字符串学习教程
Aug 20 Python
使用python实现个性化词云的方法
Jun 16 Python
Python实现一个简单的验证码程序
Nov 03 Python
Python Flask基础教程示例代码
Feb 07 Python
python3+dlib实现人脸识别和情绪分析
Apr 21 Python
Python实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
Python subprocess库的使用详解
Oct 26 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
实例详解Python模块decimal
Jun 26 Python
pyhton中__pycache__文件夹的产生与作用详解
Nov 24 Python
python中property和setter装饰器用法
Dec 19 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
一个颜色轮换的简单例子
2006/10/09 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
JavaScript 基础篇(一)
2012/03/30 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
python实现telnet客户端的方法
2015/04/15 Python
Python学习小技巧之列表项的推导式与过滤操作
2017/05/20 Python
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
python读文件的步骤
2019/10/08 Python
Python itertools.product方法代码实例
2020/03/27 Python
python爬虫请求头设置代码
2020/07/28 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
德国家具折扣店:POCO
2020/02/28 全球购物
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
英语系毕业生自荐信
2013/10/31 职场文书
金属材料工程个人求职的自我评价
2013/12/04 职场文书
部队党性分析材料
2014/02/16 职场文书
2014年国庆节广播稿
2014/09/19 职场文书
倡议书范文大全
2015/04/28 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
《山中访友》教学反思
2016/02/24 职场文书