【发布时间】:2015-02-06 19:50:14
【问题描述】:
我有两个要比较的 CSV 文件。我已经使用 dict 阅读器阅读了它们。所以现在我有来自两个 CSV 文件的字典(每行一个)。我想比较它们,比如当两个元素(带有标题 h1 和 h2 的元素)相同时,比较这些字典并打印出与第二个字典的差异。以下是示例 csv 文件。
csv1:
h1,h2,h3
aaa,g0,74
bjg,73,kg9
CSV_new:
h1,h2,h3,h4
aaa,g0,7,
bjg,73,kg9,ahf
我希望输出是这样的,虽然不完全如下所示,但我希望它能够打印出每个字典中关于 CSV_new 的修改、添加和删除:
{h1:'aaa', h2:'g0' {h3:'74', h4:''}}
{h1:'bjg', h2:'73' {h4:''}
我的代码还不够完善。
import csv
f1 = "csv1.csv"
reader1 = csv.DictReader(open (f1), delimiter = ",")
for row1 in reader1:
row1['h1']
#['%s:%s' % (f, row[f]) for f in reader.fieldnames]
f2 = "CSV_new.csv"
reader2 = csv.DictReader(open (f2), delimiter = ",")
for row2 in reader2:
row2['h1']
if row1['h1'] == row2['h1']:
print row1, row2
【问题讨论】:
-
我对你的预期输出感到非常困惑。
-
我很抱歉我的解释很糟糕。我想要的只是两个文件之间的差异,以及标题名称。 @亚当史密斯
-
基本上你是在问如何比较字典——它们是如何创建的无关紧要——所以我建议你 search 询问有关该主题的问题和答案。
-
@martineau 这些并没有真正回答我的问题,或者至少我不确定这些是否是我正在寻找的。因为我有来自一个 CSV 文件的多个字典,并且它们没有分配给它们的任何名称/变量。
-
从每个
csv.DictReader对象读取的每一行都是一个带有名称(row1或row2)的字典变量。如果将它们存储在列表中,它们的变量名称将类似于list_name[i],其中i是一个整数变量(或整数常量)。
标签: python csv dictionary compare