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 相关文章推荐
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
python flask实现分页的示例代码
Aug 02 Python
Python 获取div标签中的文字实例
Dec 20 Python
深入解析python中的实例方法、类方法和静态方法
Mar 11 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
Django xadmin开启搜索功能的实现
Nov 15 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
Python脚本实现监听服务器的思路代码详解
May 28 Python
python装饰器三种装饰模式的简单分析
Sep 04 Python
Python requests库参数提交的注意事项总结
Mar 29 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Jun 11 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 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
JS 分号引起的一段调试问题
2009/06/18 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
js命名空间写法示例
2015/12/18 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
学习vue.js计算属性
2016/12/03 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
vue中的inject学习教程
2019/04/24 Javascript
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
python生成器表达式和列表解析
2016/03/10 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
Django缓存系统实现过程解析
2019/08/02 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
岳庙导游词
2015/02/04 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
教师个人教学反思
2016/02/23 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫
nginx之内存池的实现
2022/06/28 Servers