首页 > 解决方案 > Python:比较两个csv文件单列并在单独的文件中写入不重复的条目

问题描述

我有两个包含电子邮件地址的 csv 文件。一个文件包含我需要从第二个文件中删除的电子邮件地址。我有一个代码,但它似乎给出了 IndexError。

我工作的示例代码是

import csv

# Open details file and get a unique set of links
details_csv = csv.DictReader(open('D:/emails_to_remove.csv','r'))
details = set(i.get('link') for i in details_csv)

# Open master file and only retain the data not in the set
master_csv = csv.DictReader(open('D:/emails-list.csv','r'))
master = [i for i in master_csv if i.get('link') not in details]

# Overwrite master file with the new results
with open('D:/master-output.csv', 'w') as file:
    writer = csv.DictWriter(file, master[0].keys(), lineterminator='\n')
    writer.writeheader()
    writer.writerows(master)

文件1的内容:

abc@123.com
efg@456.com

文件2的内容:

ijk@987.com
abc@123.com

期望的输出:

efg@456.com
ijk@987.com

标签: pythoncsvcompare

解决方案


sets像这样可以很容易地解决这个问题

set1 = {"abc@123.com", "efg@456.com"}
set2 = {"ijk@987.com", "abc@123.com"}

set3 = set1.union(set2) - set1.intersection(set2)
print(set3)
# set(['ijk@987.com', 'efg@456.com'])

了解集合可以做什么的一个很好的来源是https://www.geeksforgeeks.org/intersection-function-python/


推荐阅读