Python 实用技巧之利用Shell通配符做字符串匹配

作者:IT派森 时间:2021-07-18 22:57:16 

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通配符做字符串匹配,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://www.jianshu.com/p/1749af11757f

标签:python,shell,通配符,字符串,匹配
0
投稿

猜你喜欢

  • Sqlserver 2000/2005/2008 的收缩日志方法和清理日志方法

    2012-07-21 14:55:18
  • javascript设计模式交流(二) Prototype Pattern

    2007-11-29 14:01:00
  • python 删除指定时间间隔之前的文件实例

    2023-07-19 17:58:38
  • Pandas对数值进行分箱操作的4种方法总结

    2023-08-09 02:52:04
  • asp 延时 页面延迟的三种方法

    2011-03-31 11:04:00
  • 在Django中创建动态视图的教程

    2021-09-25 09:17:28
  • JS获取checkbox的个数简单实例

    2023-08-20 15:17:55
  • Python通过DOM和SAX方式解析XML的应用实例分享

    2023-10-15 10:46:32
  • Python中 map()函数的用法详解

    2021-03-25 08:16:44
  • 主页移动背景代码

    2009-11-16 17:54:00
  • 关于设计规范

    2008-06-02 13:10:00
  • 下拉列表两级连动的新方法(一)

    2009-06-04 18:18:00
  • 对acronym、abbr标签的理解

    2008-05-29 13:03:00
  • JS 调试中常见的报错问题解决方法

    2023-07-16 07:42:13
  • PHP微信开发之查询微信精选文章

    2023-11-14 12:45:54
  • Win7 x64 IIS运行ASP+Access故障完美解决方法(转)

    2012-03-27 18:30:35
  • Tensorflow加载预训练模型和保存模型的实例

    2022-06-03 05:55:41
  • aspjpeg组件安装问题

    2008-09-27 17:52:00
  • python中pip安装、升级以及升级固定的包

    2021-07-08 02:29:11
  • 五种提高 SQL 性能的方法

    2008-05-16 10:40:00
  • asp之家 网络编程 m.aspxhome.com