python - 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
解决方案
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/。
推荐阅读
- node.js - 如何在 twilio 函数运行时环境中声明自定义函数?
- python - 如何读取 Github 存储库中的所有文本文件?
- python - 如何将 optirun 添加到 vscode 调试选项?
- php - 如何管理来自 csv 文件的数据 - php
- javascript - Stop Keyframe animation from automatic start on page load
- javascript - 隐藏显示页面的不同部分 javascript ASP.NET
- python - How to create capturing groups with regex re.compile?
- mysql - How to find purchase details of a specific customer in MYSQL?
- java - Android application crash at unknown source
- javascript - 在javascript中比较今天的日期和输入日期