Skip to main content
 首页 » 编程设计

python之如何查看字符串是否包含列表中的所有子字符串 [Python]

2025年05月04日20mate10pro

场景如下:

我有一长串带时间戳的文件名,在时间戳前后都有字符。

像这样:prefix_20160817_suffix

我想要的是一个列表(最终将成为原始列表的子集),其中包含具有特定前缀、后缀和部分时间戳的文件名。这些特定字符串已在列表中给出。注意:此“包含”列表的大小可能会有所不同。

例如:['prefix1', '2016', 'suffix'] 或 ['201608', 'suffix']

如何轻松获取包含“contains”数组中每个元素的文件名列表?

这里有一些伪代码来演示我想要什么:

for each fileName in the master list: 
    if the fileName contains EVERY element in the "contains" array: 
        add fileName to filtered list of filenames 

请您参考如下方法:

我会将列表编译成 fnmatch pattern :

import fnmatch 
 
pattern = '*'.join(contains) 
filetered_filenames = fnmatch.filter(master_list, pattern) 

这基本上将 contains 中的所有字符串连接成一个 glob 模式,中间有 * 通配符。这假设 contains 的顺序很重要。鉴于您正在寻找前缀、后缀和两者之间的(部分)日期,这并没有那么困难。

重要的是要注意,如果您在具有不区分大小写的文件系统的操作系统上运行它,则 fnmatch 匹配也是不区分大小写的。在那种情况下,这通常正是您想要的。