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从网络读取图片并直接进行处理的方法
May 22 Python
python字符类型的一些方法小结
May 16 Python
Python基础篇之初识Python必看攻略
Jun 23 Python
详解Swift中属性的声明与作用
Jun 30 Python
怎样使用Python脚本日志功能
Aug 14 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
Python字符串内置函数功能与用法总结
Apr 16 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
python中用ggplot绘制画图实例讲解
Jan 26 Python
Pycharm 如何一键加引号的方法步骤
Feb 05 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
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
php基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
详解JS正则replace的使用方法
2016/03/06 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
js date 格式化
2017/02/15 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
React组件之间的通信的实例代码
2017/06/27 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
详解Next.js页面渲染的优化方案
2019/01/27 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
利用python代码写的12306订票代码
2015/12/20 Python
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
OpenCV中VideoCapture类的使用详解
2020/02/14 Python
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
优秀毕业自我鉴定
2014/02/15 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书
一篇文章弄懂Python中的内建函数
2021/08/07 Python
关于maven依赖 ${xxx.version}报错问题
2022/01/18 Java/Android