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构造函数及解构函数介绍
Feb 26 Python
Python中操作文件之write()方法的使用教程
May 25 Python
Python编程实现线性回归和批量梯度下降法代码实例
Jan 04 Python
Python使用base64模块进行二进制数据编码详解
Jan 11 Python
Django中的Model操作表的实现
Jul 24 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 Python
wxPython实现带颜色的进度条
Nov 19 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
使用Pyhton 分析酒店针孔摄像头
Mar 04 Python
使用python客户端访问impala的操作方式
Mar 28 Python
pandas中对文本类型数据的处理小结
Nov 01 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中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
JavaScript中两种链式调用实现代码
2011/01/12 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
python getopt 参数处理小示例
2009/06/09 Python
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python排序算法实例代码
2017/08/10 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
Kneipp克奈圃美国官网:德国百年精油配方的传承
2018/02/07 全球购物
最新大学生自我评价
2013/09/24 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
给市场的环保建议书
2014/05/14 职场文书
工程承诺书怎么写
2014/05/24 职场文书
企业管理标语
2014/06/10 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
html5调用摄像头实例代码
2021/06/28 HTML / CSS
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis