【发布时间】:2018-04-09 12:34:56
【问题描述】:
我使用listdir读取了两个文件夹中的文件:
from os import listdir
list_1 = [file for file in listdir("./folder1/") if file.endswith(".csv")]
list_2 = [file for file in listdir("./folder2/") if file.endswith(".json")]
现在我有两个列表:
list_1 = ['12_a1_pp.csv', '32_a3_pp.csv', '45_a17_pp.csv', '81_a123_pp.csv']
list_2 = ['12_a1.json', '32_a3.json', '61_a54.json']
我想找到相应的两个子列表,其中包含名称的初始部分相同的那些文件。换句话说:
list_1b = ['12_a1_pp.csv', '32_a3_pp.csv']
list_2b = ['12_a1.json', '32_a3.json']
我该怎么做?
PS 请注意,listdir 部分对于回答问题可能无关紧要。我只包括它,因为如果listdir 的结果保证按字母顺序排列,那么这可能有助于遍历这两个列表。当然,在这个简单的示例中,列表很短,但在实际用例中,它们包含数百个文件。
【问题讨论】:
-
我个人会考虑在这里使用类似 glob 模式匹配的东西:docs.python.org/2/library/glob.html
-
为什么不直接从列表 1 中删除特殊子字符串“_pp.scv”和从列表 2 中删除“.json”,并使用两个嵌套循环进行相等性测试?
标签: python list set-intersection