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

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通配符做字符串匹配,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值