加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在两个文件夹中查找名称的相同初始部分的文件

发布时间:2020-12-20 11:03:41 所属栏目:Python 来源:网络整理
导读:我用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 = ['
我用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的结果保证按字母顺序排列,那么这可能有助于遍历这两个列表.当然,在这个简单的例子中,列表很短,但在实际使用案例中,它们汇集了数百个文件.

解决方法

更加pythonic的方法将使用&集合的(交集)运算符:

common = set(x[:-7] for x in list_1) & set(x[:5] for x in list_2)
list_1b = [x + '_pp.csv' for x in common]
list_2b = [x + '.json' for x in common]

编辑:如果你需要拆分每个列表的特定字符(请参阅注释),这里是一个更新版本(搜索list_1中的最后一个’_’并搜索list_2中的最后一个’.’):

common = set(x[:x.rindex('_')] for x in list_1) & set(x[:x.rindex('.')] for x in list_2)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读