Python - 过滤匹配给定模式的两个列表中的项目

Python - Filter items in two lists matching given pattern

我的 Python 代码中有 3 个列表:

ListIterationData = ["01-2021", "02-2021"]

ListOne = ["FileName1-01-2021", "FileName1-02-2021", "FileName1-03-2021", "FileName1-04-2021"]

ListTwo = ["Filename2-01-2021", "Filename2-05-2021"]

用例: 作为用户,我想遍历“ListIterationData”中的项目,并在“ListOne”和“ListTwo”中找到以 ListIterationData[i] 结尾的匹配项目。 “ListIterationData”中的项目将用作“ListOne”和“ListTwo”中的匹配模式。 类似于:

ListOne_Filtered = []
ListTwo_Filtered = []

For item in ListIteration Data:
if item in ListOne endswith ListIterationData[i] AND item in ListTwo endswith ListIterationData[i]

Then append both ListOne_Filtered and ListOne_Filtered

以下是我的预期结果:

ListOne_Filtered = ["FileName1-01-2021"]
ListTwo_Filtered = ["Filename2-01-2021"]

非常感谢您的帮助

试试这个:

ListOne_Filtered, ListTwo_Filtered = [], []
for i in range(min(len(ListIterationData), len(ListOne), len(ListTwo))):
    if ListOne[i].endswith(ListIterationData[i]) and ListTwo[i].endswith(ListIterationData[i]):
        ListOne_Filtered.append(ListOne[i])
        ListTwo_Filtered.append(ListTwo[i])

你可以用正则表达式解决这个问题:

ListIterationData = ["01-2021", "02-2021"]
ListOne = ["FileName1-01-2021", "FileName1-02-2021", "FileName1-03-2021", "FileName1-04-2021"]
ListTwo = ["Filename2-01-2021", "Filename2-05-2021"]

list_one_filtered = []
list_two_filtered = []

for item in ListIterationData:
    for file_one, file_two in zip(ListOne, ListTwo):
        if re.search(item + "$", file_one) and re.search(item + "$", file_two):
            list_one_filtered.append(file_one)
            list_two_filtered.append(file_two)

print(list_one_filtered) # ['FileName1-01-2021']
print(list_two_filtered) # ['Filename2-01-2021']

因此遍历您的迭代数据,并同时遍历列表一和列表二,然后使用 "$" 符号作为锚点检查两个文件是否以所需结尾的正则表达式结尾。