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

Use glob to match pattern in string in python

我有一个 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))

以上都不行。

?匹配单个字符,*匹配任意数量的字符(甚至none)。由于您要匹配任何包含 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.

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