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魔法方法-属性访问控制详解
Jul 25 Python
Python实现的矩阵类实例
Aug 22 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
Feb 08 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
wxPython色环电阻计算器
Nov 18 Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 Python
Pycharm debug调试时带参数过程解析
Feb 03 Python
python TCP包注入方式
May 05 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
Nov 28 Python
Ubuntu16安装Python3.9的实现步骤
Dec 15 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 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 object转数组示例
2014/01/15 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
js正确获取元素样式详解
2009/08/07 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
jquery获得下拉框值的代码
2011/08/13 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
在Django的模型中添加自定义方法的示例
2015/07/21 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
django 常用orm操作详解
2017/09/13 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
小学生暑假家长评语
2014/04/17 职场文书
高中教师评语大全
2014/04/25 职场文书
法人委托书范本
2014/09/15 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
英语复习计划
2015/01/19 职场文书
村干部任职承诺书
2015/01/21 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android