【发布时间】:2021-05-05 04:02:33
【问题描述】:
我有 2 个 csv 文件。
文件 1:
EmployeeName,Age,Salary,Address
Vinoth,12,2548.245,"140,North Street,India"
Vinoth,12,2548.245,"140,North Street,India"
Karthick,10,10.245,"140,North Street,India"
文件2:
EmployeeName,Age,Salary,Address
Karthick,10,10.245,"140,North Street,India"
Vivek,20,2000,"USA"
Vinoth,12,2548.245,"140,North Street,India"
我想比较这两个文件并将差异报告到另一个 csv 文件中。我使用了下面的python代码(2.7版)
#!/usr/bin/env python
import difflib
import csv
with open('./Input/file1', 'r' ) as t1:
fileone = t1.readlines()
with open('./Input/file2', 'r' ) as t2:
filetwo = t2.readlines()
with open('update.csv', 'w') as outFile:
for line in filetwo:
if line not in fileone:
outFile.write(line)
for line in fileone:
if line not in filetwo:
outFile.write(line)
当我执行时,下面是我得到的输出:
实际输出
Vivek,20,2000,"USA"
但我的预期输出如下,因为 file1 中“Vinoth”的记录出现了 2 次,但在 file2 中只出现了 1 次。
预期输出
Vinoth,12,2548.245,"140,North Street,India"
Vivek,20,2000,"USA"
问题
- 请告诉我如何获得预期的输出。
- 另外,如何将差异记录的文件名和行号获取到输出文件中?
【问题讨论】:
-
几个问题:1) 文件是否比可用内存大? 2) 每个文件有多少 GB 数据?
-
我不明白你的标准。如果您的新文件中没有 Karthick,为什么应该有 Vinoth?你能解释一下吗?
-
@JavierLópezTomás
Karthick在两个文件中找到一次,而在 file2 中只有一个Vinoth行,在 file1 中只有两个。他还想考虑一行出现的次数。 -
@FredrikHedman 是的,文件很大。大约是 3.5 GB
标签: python