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处理RSS、ATOM模块FEEDPARSER介绍
Feb 18 Python
详解Django中的权限和组以及消息
Jul 23 Python
python 中random模块的常用方法总结
Jul 08 Python
wxPython之解决闪烁的问题
Jan 15 Python
python 获取一个值在某个区间的指定倍数的值方法
Nov 12 Python
用python标准库difflib比较两份文件的异同详解
Nov 16 Python
Python Cookie 读取和保存方法
Dec 28 Python
python实现计算器功能
Oct 31 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
解决pycharm上的jupyter notebook端口被占用问题
Dec 17 Python
python中return的返回和执行实例
Dec 24 Python
Python yield的用法实例分析
Mar 06 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修改Linux或Unix口令的方法分享
2012/01/30 PHP
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
prototype 1.5 & scriptaculous 1.6.1 学习笔记
2006/09/07 Javascript
比较详细的关于javascript中void(0)的具体含义解释
2007/08/02 Javascript
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
jQuery数据显示插件整合实现代码
2011/10/24 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
2014/12/16 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
Javascript中的对象和原型(二)
2016/08/12 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
vue中多个倒计时实现代码实例
2019/03/27 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
Python绘制并保存指定大小图像的方法
2019/01/10 Python
Python多分支if语句的使用
2020/09/03 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
英文简历自荐信范文
2013/12/11 职场文书
社团活动总结书
2014/06/27 职场文书
运动会400米加油稿(8篇)
2014/09/22 职场文书
董事长年会致辞
2015/07/29 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
python小程序之飘落的银杏
2021/04/17 Python
解读Vue组件注册方式
2021/05/15 Vue.js