python - 如何比较两个 csv 文件并打印所有差异
问题描述
我有两个(old.csv and new.csv)
包含大量数据的 csv 文件。两个 csv 文件具有相同的数据,但每行的顺序可能不同。old.csv
文件充当源文件。我很想比较两个 csv 文件,看看是否缺少任何行或是否有任何新行。
- 比较
old.csv
并new.csv
查看 中是否缺少任何行new.csv
或是否存在任何新行new.csv
。每一行都应该在两个 csv 中完全匹配。
下面的代码我只检查new.csv
不存在的新行,old.csv
但我们如何才能检查所有其他内容。
with open('old.csv', 'r') as t1, open('new.csv', 'r') as t2:
fileone = t1.readlines()
filetwo = t2.readlines()
with open('update.csv', 'w') as outFile:
for line in filetwo:
if line not in fileone:
outFile.write(line)
基本上old.csv
和new.csv
文件都应该与内容(每一行)、条目数和其他内容完全匹配。这两个文件之间应该没有任何区别。
解决方案
您可以考虑为此使用 difflib,但它与命令行 diff 具有相同的限制。当它只是被移动时,它可以将一条线报告为“新”。
假设顺序并不重要,那么基于集合的方法可能就是您所需要的。
推荐阅读
- python - 如何使用 Python Numpy 中的 train_test_split 将数据拆分为训练、测试和验证数据集?分裂不应该是随机的
- javascript - 如何在字母表中向上移动一个字符?
- angular - 执行多个请求角度 8
- c# - 通过 C# 删除为 lambda 配置的环境变量
- javascript - 如果括号仅包含属性访问器,是否会忽略括号?
- reactjs - 在 react-bootstrap 中编辑导航栏或其他组件
- asp.net - .NET Core 3.0 中没有注册页面的脚手架标识
- c# - WPF DatagridComboboxcolumn 不是组合框样式
- azure-functions - Azure 功能:无法加载 DLL 认知语音 dll
- powershell - 使用 PowerShell 在没有备用数据流的情况下搜索数据的小问题