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输出PowerPoint(ppt)文件中全部文字信息的方法
Apr 28 Python
python3抓取中文网页的方法
Jul 28 Python
Python list操作用法总结
Nov 10 Python
Python中字符串的常见操作技巧总结
Jul 28 Python
Python编程判断一个正整数是否为素数的方法
Apr 14 Python
Python读写及备份oracle数据库操作示例
May 17 Python
python实现统计代码行数的小工具
Sep 19 Python
python 并发下载器实现方法示例
Nov 22 Python
Python模块相关知识点小结
Mar 09 Python
执行Python程序时模块报错问题
Mar 26 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
Matlab中plot基本用法的具体使用
Jul 17 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代码
2012/07/14 PHP
体育彩票排列三组选三算法分享
2014/03/07 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
JavaScript中的Window窗口对象
2008/01/16 Javascript
js 表单验证方法(实用)
2009/04/28 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
2015/03/04 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
Python logging模块学习笔记
2014/05/24 Python
Django入门使用示例
2017/12/12 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
Python如何实现的二分查找算法
2020/05/27 Python
优秀共产党员先进事迹
2014/01/27 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
绿里奇迹观后感
2015/06/15 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis