我有两个大文本文件(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
行的内容,并检查两行中是否存在所有字段,与顺序无关。或者,在读取行之后对字段进行排序。
答案 0 :(得分:6)
您可以对检查进行规范化,而不会影响数据。
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))
答案 1 :(得分:-1)
尝试使用diff
作为Linux / Unix命令行 - 这对于比较文件非常有用。