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

Python:如何实现列表元素与另一列表行的部分匹配

解决方案

方法一:直接子串包含判断

这是最直接高效的方式,无需额外依赖,直接检查字符串中是否包含目标子串即可。

  1. 处理jobs列表,生成目标子串:
jobs = [
  'P01_TEST1_C', 
  'P01_TEST3_B', 
  'P01_TEST5_F', 
  'P01_QUALITY_C'
]
# 提取每个job去掉前3个字符后的子串
target_substrings = [job[3:] for job in jobs]
  1. 遍历data列表,筛选符合条件的行:
data = [
  ['JOB','X01_TEST1_C', 'NAME', 'DATE', 'EXTRADATA'],
  ['JOB','P01_TEST3_C', 'NAME', 'DATE', 'EXTRADATA'],
  ['JOB','X01_TEST1002_C', 'NAME', 'DATE', 'EXTRADATA'],
  ['JOB','X01_TEST4231_C', 'NAME', 'DATE', 'EXTRAP01_TEST5_FDATA']
]

matched_rows = []
for row in data:
    # 检查当前行的任意元素是否包含目标子串
    for element in row:
        if any(substring in element for substring in target_substrings):
            matched_rows.append(row)
            break  # 找到匹配后跳出,避免重复添加

# 输出匹配结果
for row in matched_rows:
    print(row)

运行结果:

['JOB', 'X01_TEST1_C', 'NAME', 'DATE', 'EXTRADATA']
['JOB', 'X01_TEST4231_C', 'NAME', 'DATE', 'EXTRAP01_TEST5_FDATA']

注:原data中的第二行['JOB','P01_TEST3_C', ...]不包含目标子串_TEST3_B,所以未被匹配;如果是笔误将P01_TEST3_C改为P01_TEST3_B,该行会被成功匹配。


方法二:使用通配符匹配(fnmatch库)

如果后续需要更灵活的匹配规则(比如限制开头/结尾),可以用Python内置的fnmatch库实现通配符匹配。

  1. 生成通配符模式:
import fnmatch

jobs = [
  'P01_TEST1_C', 
  'P01_TEST3_B', 
  'P01_TEST5_F', 
  'P01_QUALITY_C'
]
# 生成包含目标子串的通配符模式(*表示任意字符)
target_patterns = [f"*{job[3:]}*" for job in jobs]
  1. 筛选匹配行:
data = [
  ['JOB','X01_TEST1_C', 'NAME', 'DATE', 'EXTRADATA'],
  ['JOB','P01_TEST3_C', 'NAME', 'DATE', 'EXTRADATA'],
  ['JOB','X01_TEST1002_C', 'NAME', 'DATE', 'EXTRADATA'],
  ['JOB','X01_TEST4231_C', 'NAME', 'DATE', 'EXTRAP01_TEST5_FDATA']
]

matched_rows = []
for row in data:
    for element in row:
        if any(fnmatch.fnmatch(element, pattern) for pattern in target_patterns):
            matched_rows.append(row)
            break

# 输出结果
for row in matched_rows:
    print(row)

该方法效果与子串判断一致,但通配符模式支持更多扩展规则,比如TEST*C可匹配以TEST开头、C结尾的字符串。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:00:56