【发布时间】:2020-03-31 18:10:45
【问题描述】:
我有下面的 python 代码来比较 2 个 CSV 文件行,并匹配每个列字段并显示差异。但是输出不正确,请帮助改进代码输出。
(我用谷歌搜索并找到了一个python包csvdiff,但它需要指定列号。)
2 CSV files:
cat file1.csv
1,2,2222,3333,4444,3,
cat file2.csv
1,2,5555,6666,7777,3,
My Python3 code:
with open('file1.csv', 'r') as t1, open('file2.csv', 'r') as t2:
filecoming = t1.readlines()
filevalidation = t2.readlines()
for i in range(0,len(filevalidation)):
coming_set = set(filecoming[i].replace("\n","").split(","))
validation_set = set(filevalidation[i].replace("\n","").split(","))
ReceivedDataList=list(validation_set.intersection(coming_set))
NotReceivedDataList=list(coming_set.union(validation_set)-
coming_set.intersection(validation_set))
print(NotReceivedDataList)
output:
['6666', '5555', '3333', '2222', '4444', '7777']
即使它正在打印两个文件的差异,输出也不是按顺序排列的。 (与file2有3处不同,与file1有3处不同)
我正在尝试生成按列显示的结果,即 file1 中的每个差异与 file2 中的相应差异。
somethinglike
2222 - 5555
3333 - 6666
4444 - 7777
请帮忙,
提前致谢。
【问题讨论】: