两个 python 列表之间的部分匹配,一个列表完全存在于另一个列表中,Python 中几乎没有其他字符



我有两个列表。

files = ['26ZJ35_v1.4.doc', '2EPWW9_v1.1.pdf', '344D4Q_v1.8.ppt'. '33ADNL_v3.0.pdf']
baseline_documents  = ['26ZJ35', '2EPWW9']

我想在 list1 中找到所有匹配项,该匹配项与列表 2 具有完全相同的字符串匹配项并附加到新列表中。

所需输出:

list3 = ['26ZJ35_v1.4.doc', '2EPWW9_v1.1.pdf']

代码到现在:

import csv
import os
import re
metadata = []
with open('D:/meta_demo.csv', 'r') as f:
    rows = csv.reader(f)
    for i in rows:
        metadata.append(i)
        #print(i)    
baseline_documents = metadata[1:20]
DIR = 'D:/demo_files/'
files = [i for i in os.listdir(r"D:demo_files")]
list3 = []
for i in files:
    if re.search(r"[^_]*", i) in baseline_documents:
        list3.append(files)
list3 = [i for i in baseline_documents if re.search(r"[^_]*", i) in files]
您可以使用

str.startswith

前任:

files = ['26ZJ35_v1.4.doc', '2EPWW9_v1.1.pdf', '344D4Q_v1.8.ppt', '33ADNL_v3.0.pdf']
baseline_documents  = ['26ZJ35', '2EPWW9']
result = [i for i in files if i.startswith(tuple(baseline_documents))]
print(result)

如果您需要正则表达式,请使用re.match .

前任:

import re
files = ['26ZJ35_v1.4.doc', '2EPWW9_v1.1.pdf', '344D4Q_v1.8.ppt', '33ADNL_v3.0.pdf']
baseline_documents  = ['26ZJ35', '2EPWW9']
pattern = re.compile("|".join(baseline_documents))
result = [i for i in files if pattern.match(i)]
print(result)

输出:

['26ZJ35_v1.4.doc', '2EPWW9_v1.1.pdf']

最新更新