gpt4 book ai didi

csv - 比较 CSV 文件

转载 作者:行者123 更新时间:2023-12-04 00:45:19 25 4
gpt4 key购买 nike

我目前正在使用名为 TableTexCompare 的 Windows 实用程序

该工具可以获取 2 个 CSV 文件并进行比较。它的好处是,即使 2 个文件的记录没有按相同的顺序排序或字段的位置不同,它也可以进行比较。

因此,以下 2 个文件将导致成功比较

(文件 1.csv)

FirstName,LastName,Age
Mona,Sax,30
Max,Payne,43
Jack,Lupino,50

(文件 2.csv)
FirstName,Age,LastName
Max,43,Payne
Jack,50,Lupino
Mona,30,Sax

我正在寻找的是从命令行做同样的事情,只有 1 个不同:
我希望只在一个方向上进行比较,即如果 File2.csv 如下(File1.csv 的子集),比较应该通过

(文件 2.csv)
FirstName,Age,LastName
Jack,50,Lupino

我并不特别关心它是使用某种编程语言、专用 cli 工具还是 shell 脚本(例如使用 awk)。我对 Java 和 Groovy 有一些经验,但想指出一些初始方向。

最佳答案

我可以提供一个 Python 解决方案:

import csv
with open("file1.csv") as f1, open("file2.csv") as f2:
r1 = list(csv.DictReader(f1))
r2 = csv.DictReader(f2)
for item in r2:
if not item in r1:
print("r2 is not a subset of r1!")
break

这实际上比 Python 中所需的要冗长一些(但更容易理解);我个人会使用生成器表达式:
import csv
with open("file1.csv") as f1, open("file2.csv") as f2:
r1 = list(csv.DictReader(f1))
r2 = csv.DictReader(f2)
if all(item in r1 for item in r2):
print("r2 is a subset of r1")

关于csv - 比较 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15199874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com