python - 在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
推荐阅读
- javascript - Javascript - 编写 js 插件时如何构建最小文件
- c++ - C++ 程序在迭代中变慢
- api - 如何根据窗口标题栏结束进程?
- python - pyGithub最大使用API调用率
- python - 使用 multiprocess.Process 创建进程以并行操作多个生成器,而不首先列出列表
- javascript - JS和正则表达式用于替换double = mark内的所有内容
- regex - 用于删除“|”的 Google Apps 脚本正则表达式 单引号,管道,单引号 - 导致超时
- javascript - Laravel Mix / Webpack:当我调用“npm run prod”时,它不会缩小 .scripts 但会缩小 .js
- c++11 - 使用接受 lambda 的模板函数重载
- java - 从另一个活动中检索微调器自定义位置以在另一个微调器中使用