【发布时间】:2015-09-01 18:11:55
【问题描述】:
我正在尝试比较两个 csv 文件并使用 python 2.7 找到不同的行。当所有列不相同时,行被认为是不同的。这些文件将是具有所有相同列的相同格式,并且将采用这种格式。
oldfile.csv
ID name Date Amount
1 John 6/16/2015 $3000
2 Adam 6/16/2015 $4000
newfile.csv
ID name Date Amount
1 John 6/16/2015 $3000
2 Adam 6/16/2015 $4000
3 Sam 6/17/2015 $5000
4 Dan 6/17/2015 $6000
当我运行我的脚本时,我希望输出只是最后两行并写在一个 csv 文件中,不幸的是我无法让我的代码正常工作。我在下面写的内容会打印出 oldfile.csv 的内容,并且不会打印不同的行。我想要代码做的是在 output.csv 文件中打印出最后一行。即
output.csv
3 Sam 6/17/2015 $5000
4 Dan 6/17/2015 $6000
这是我使用 csv 模块的代码 python 2.7 代码。
import csv
f1 = open ("olddata/olddata.csv")
oldFile1 = csv.reader(f1)
oldList1 = []
for row in oldFile1:
oldList1.append(row)
f2 = open ("newdata/newdata.csv")
newFile2 = csv.reader(f2)
newList2 = []
for row in newFile2:
newList2.append(row)
f1.close()
f2.close()
output = [row for row in oldList1 if row not in newList2]
print output
不幸的是,代码只打印出 oldfile.csv 的内容。我整天都在研究它并尝试不同的变化,但我根本无法让它正常工作。再次,您的帮助将不胜感激。
【问题讨论】:
-
您的输入在我看来不像 CSV。它是 TSV(制表符分隔值)文件吗?
标签: python python-2.7 csv compare