Python的glob模块允许指定通配符来列出文件,并且非常实用获取文件。
但是,如何获取/重构与通配符匹配的值?
例如,假设我有这些8个文件:fa1 fa2 fa3 fb1 fb3 fc1 fc2 fc3
(注意:fb2
已经缺失)。
我可以执行
import glob
glob.glob('f[ab][12]') # ['fa2', 'fb1', 'fa1']
在这个例子中,我有两个通配符:
[ab]
和 [12]
。每个通配符都匹配值 a
、b
、1
和 2
,但是只有 3 种组合的值可以进行匹配,因为一个文件 fb2
(通配符的有效组合)不存在。问题:如何获取每个通配符的有效匹配值列表? 更具体地说:如何获取元组的列表,其中包含与实际存在的文件匹配的(字符串)值?
在我的例子中,我想获取元组列表:
[('a', '2'), ('b', '1'), ('a', '1')]
。注意:
- 我不想获取完整的名称,只想获取由通配符匹配的值(在我的例子中,前缀
'f'
不属于通配符的一部分,因此我不想在元组列表中获取它); - 这必须适用于所有支持的通配符,包括 * 和 ?。
编辑
由于我的问题被认为是“过于宽泛”,所以我重新制定了问题:是否可以使用 glob/fnmatch 模块而不是直接使用正则表达式来获得该结果?