微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在python中使用glob匹配字符串中的模式

如何解决在python中使用glob匹配字符串中的模式

我有一个 glob 模式,我试图用它来匹配和选择一些文件。我正在测试它,它似乎只适用于通配符。文件示例如下,其中包括其他未列出但扩展名不同且我不需要的文件

240721_124607_1000_Y1_B.txt.bz2
240721_124607_1000_Z1_B.txt.bz2
240721_124607_1000_X1_B.txt.bz2

我使用的 glob 模式获取所有带有 bz2 扩展名的文件,即

files = glob.glob('Z:/{}/{}/DL/*.txt.bz2'.format(directory,folder))

以上有效,但我想缩小范围以仅获取 ZI 文件。我尝试了以下模式,但它们不起作用

files = glob.glob('Z:/{}/{}/DL/?Z1.txt.bz2'.format(directory,folder))

也试过了

files = glob.glob('Z:/{}/{}/DL/Z1*.txt.bz2'.format(directory,folder))

也试过了

files = glob.glob('Z:/{}/{}/DL/?Z1*.txt.bz2'.format(directory,folder))

以上都行不通。

解决方法

? 匹配单个字符,* 匹配任意数量的字符(甚至没有)。由于您希望匹配包含 Z1 的任何名称,因此您需要的表达式是:

files = glob.glob('Z:/{}/{}/DL/*Z1*.txt.bz2'.format(directory,folder))

请注意,这也将匹配任何类似的内容

Z1_Y1_B.txt.bz2
2407Z1_124607_1000_Y1_B.txt.bz2
2407Z1_124607_1000_X1_Z1.txt.bz2
etc.

只要在 Z1 之前和最后一个斜杠之后有 .txt.bz2,它就会匹配

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。