【发布时间】:2020-09-29 17:05:20
【问题描述】:
使用 DictReader 和 DictWriter 我需要找到 file1.csv 和 file2.csv 之间的匹配值。如果找到匹配项,请将其从 file1.csv 中删除
file1.csv
UserName,LastIP,LastLogon
Jessica_Alba,10.10.10.11,11/14/2019
Karen_Edwards,10.10.10.12,11/14/2019
Tracy_Chung,10.10.10.25,11/15/2019
file2.csv
Department,UserName,LastPasswordReset,LastIP
IT,Jessica_Alba,9/14/2019,10.10.10.11
Accounting,Karen_Edwards,9/14/2019,10.10.10.12
比较两个文件后的预期输出,file1.csv 通过删除匹配的用户进行更新
UserName,LastIP,LastLogon
Tracy_Chung,10.10.10.25,11/15/2019
但是,我的代码似乎并非如此。我做错了什么?
data3 = []
with open("file1.csv","r") as in_file1, open("file2.csv", "r") as in_file2:
reader1 = csv.DictReader(in_file1)
reader2 = csv.DictReader(in_file2)
for row2 in reader2:
for row1 in reader1:
print(row1['UserName'])
if row2['UserName'] != row1['UserName']:
data3.append(row1)
print(data3)
【问题讨论】:
-
对于
reader2中的第一行,您的代码正在遍历reader1的所有行,并且每次都将row2附加到data3,除了用户名相同的一次。 -
@Wups 我在代码中打错了字。它应该是第 1 行。
-
@Wups 想说的是,您的逻辑中有一个更根本的错误。如果不是因为其他原因导致循环为空(请参阅我的回答),您将多次添加同一个用户。
标签: python python-3.x csv