Python每日一练0014

问题

你想使用 Unix Shell 中常用的通配符(比如 *.py , Dat[0-9]*.csv 等)去匹配文本字符串

解决方案

使用fnmatch模块的fnmatchfnmatchcase函数

>>> import fnmatch
>>> print(fnmatch.fnmatch('hello.py', '*.py'))
True
>>> print(fnmatch.fnmatch('hello.py', 'hell?.py'))
True
>>> print(fnmatch.fnmatchcase('hello.py', '*.py'))
True
>>> print(fnmatch.fnmatchcase('hello.py', 'hell?.py'))
True

其中fnmatchfnmatchcase的区别是

  • fnmatch(filename, pattern)对大小写的敏感依赖于系统,意思是在判断匹配之前,会对两个参数调用os.path.normcase(path),然后再进行匹配。关于os.path.normcase(path)见:https://docs.python.org/3/library/os.path.html#os.path.normcase
  • fnmatchcase(filename, pattern)对大小写的敏感不依赖于系统

讨论

fnmatch支持的通配符如下:

PatternMeaning
*匹配任意字符串
?匹配任意一个字符
[seq]匹配在seq里的任意一个字符
[!seq]匹配不在seq里的任意一个字符

fnmatch() 匹配能力介于简单的字符串方法和强大的正则表达式之间。 如果在数据处理操作中只需要简单的通配符就能完成的时候,这通常是一个比较合理的方案。

来源

Python Cookbook

关注

欢迎关注我的微信公众号:python每日一练

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值