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 05 Python
Django URL传递参数的方法总结
Aug 28 Python
python http接口自动化脚本详解
Jan 02 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
python3 实现验证码图片切割的方法
Dec 07 Python
Python设计模式之观察者模式原理与用法详解
Jan 16 Python
详解Python 函数如何重载?
Apr 23 Python
Django处理多用户类型的方法介绍
May 18 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
Jun 27 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 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的配置文件php.ini
2006/10/09 PHP
php session 预定义数组
2009/03/16 PHP
PHP 引用文件技巧
2010/03/02 PHP
PHP数组实例总结与说明
2011/08/23 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
在Python的Django框架下使用django-tagging的教程
2015/05/30 Python
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
python实现图片插入文字
2019/11/26 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
HTML5触摸事件实现移动端简易进度条的实现方法
2018/05/04 HTML / CSS
国税会议欢迎词
2014/01/16 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
餐馆开业致辞
2015/08/01 职场文书
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers