【发布时间】:2020-10-21 18:19:24
【问题描述】:
我有 2 个 CSV,它们是 New.csv 和 Old.csv,它们有大约 1K 行和 10 列,其结构如下:
如果 new.csv 中的 longName(第一列)不在 old.csv 中,我希望将整个 new.csv 行附加到 changes.csv。
我一开始是这样做的,但它根本不起作用:
def deltaFileMaker():
with open('Old.csv', 'r', encoding='utf-8') as t1, open('New.csv', 'r', encoding='utf-8') as t2:
fileone = t1.readlines()
filetwo = t2.readlines()
with open('changes.csv', 'w', encoding='utf-8') as outFile:
for line in filetwo:
if line not in fileone:
outFile.write(line)
deltaFileMaker()
我也尝试使用 csv-diff,但找不到将其输出转换为 csv 文件的方法
更新
def deltaFileMaker():
from csv_diff import load_csv, compare
diff = compare(
load_csv(open("old.csv",encoding="utf8"), key="longName"),
load_csv(open("new.csv",encoding="utf8"), key="longName")
)
with open('changes.csv', 'w',encoding="utf8") as f:
w = csv.DictWriter(f, diff.keys())
w.writeheader()
w.writerow(diff)
deltaFileMaker()
【问题讨论】:
-
你使用 csv-diff 的代码是什么?
-
我只是做了通用的
csv-diff new.csv old.csv --key=id,我不知道如何用它做任何其他事情 -
你用的是
--key=id还是--key=longName? -
抱歉,我用的是 longName
-
如果有一种方法可以将 csv-diff 转换为完美的 csv 文件
标签: python python-3.x csv compare