我有两个列表。
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']