You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中基于列表中的模式比较两个列表?

如何在Python中基于列表中的模式比较两个列表?

案例说明

  • 案例1:
    List_1 = ['aaa_123.csv','bbb_456.csv','ccc_789.csv','aaa_321.csv']
    List_2 = ['aaa*.csv','bbb*.csv', 'ccc*.csv']
    预期输出:List_2中的所有元素在List_1中均有匹配的模式。

  • 案例2:
    List_1 = ['aaa_123.csv','bbb_456.csv','aaa_321.csv']
    List_2 = ['aaa*.csv','bbb*.csv', 'ccc*.csv','ddd*.csv']
    预期输出:List_2的模式未与List_1完全匹配,未找到'ccc*.csv'和'ddd*.csv'的匹配项。

解决方案

直接用Python标准库的fnmatch模块就能处理这类通配符匹配需求,它原生支持*这类通配符规则,无需自己写复杂正则。

代码实现

import fnmatch

def check_pattern_matches(file_list, pattern_list):
    unmatched = []
    for pattern in pattern_list:
        # 检查当前模式是否能匹配列表中至少一个文件
        has_match = any(fnmatch.fnmatch(file, pattern) for file in file_list)
        if not has_match:
            unmatched.append(pattern)
    
    if not unmatched:
        print("List_2中的所有元素在List_1中均有匹配的模式。")
    else:
        print(f"List_2的模式未与List_1完全匹配,未找到{', '.join(map(repr, unmatched))}的匹配项。")

# 测试案例1
List_1 = ['aaa_123.csv','bbb_456.csv','ccc_789.csv','aaa_321.csv']
List_2 = ['aaa*.csv','bbb*.csv', 'ccc*.csv']
check_pattern_matches(List_1, List_2)

# 测试案例2
List_1 = ['aaa_123.csv','bbb_456.csv','aaa_321.csv']
List_2 = ['aaa*.csv','bbb*.csv', 'ccc*.csv','ddd*.csv']
check_pattern_matches(List_1, List_2)

运行结果

  • 案例1输出:List_2中的所有元素在List_1中均有匹配的模式。
  • 案例2输出:List_2的模式未与List_1完全匹配,未找到'ccc*.csv', 'ddd*.csv'的匹配项。

内容的提问来源于stack exchange,提问作者pradeep nadarajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:10:00