我有两个大型文本文件(200,000 多行),CSV 格式。我需要逐行比较它们,但字段可能会在每一行内切换。
示例文件A.csv:
AAA,BBB,,DDD
EEE,,GGG,HHH
III,JJJ,KKK,LLL
示例文件B.csv:
AAA,,BBB,DDD
EEE,,GGG,HHH
LLL,KKK,JJJ,III
因此,就我的目的而言,A.csv 和 B.csv 应该是“相同的”,即使字段在第一行和最后一行中切换。由于每个文件中的字段顺序可能不同,因此 grep 或 diff 等常用选项将不起作用。
基本上,我想我需要写一些东西来读取一行 A.csv 和 B.csv,并检查两行中是否存在所有字段,独立于订单。或者,在阅读行后对字段进行排序的东西。
请您参考如下方法:
您可以在不影响数据的情况下规范化检查。
with open('big1.csv') as i, open('big2.csv') as j:
a = csv.reader(i)
b = csv.reader(j)
for linea in a:
lineb = next(b)
if sorted(map(str.lower, linea)) != sorted(map(str.lower, lineb)):
print('{} does not match {}'.format(linea, lineb))
