关于生成两个 csv 文件的交集和并集

关于生成两个 csv 文件的交集和并集

我有两个 csv 文件,这两个文件之间有一些重叠的列。假设一个文件名为 A.csv,另一个文件名为 B.csv。 A 和 B 的交集称为 C。

我想生成三个新的 csv 文件:C; B减去C后的子集,称为D; A 和 D 的并集,称为 E。

有没有什么方法可以在 Linux/Unix 中使用命令来做到这一点,而不需要应用重量级编程语言?

答案1

我会使用 python 来做这件事,不要被 python 吓倒,它在这种事情上很擅长。我针对您的问题的(粗略且未经测试的)解决方案是:

f_csv_1 = open("csv1.csv")
f_csv_2 = open("csv2.csv")

csv_1 = f_csv_1.readlines()
csv_2 = f_csv_2.readlines()

f_csv_1.close()
f_csv_2.close()

intersection = list(set(csv_1) & set(csv_2))
union = list(set(csv_1) | set(csv_2))

out_1 = open("intersection.csv", "w")

for row in intersection:
      out_1.write("%s" % row)

out_2 = open("union.csv", "w")

for row in union:
      out_2.write("%s" % row)

out_1.close()
out_2.close()

相关内容