比较2个文本文件中的行

时间:2016-01-10 05:59:39

标签: python csv

我有两个大文本文件(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.csvB.csv应该是“相同的”,即使字段在第一行和最后一行中切换。由于每个文件中的字段可能具有不同的顺序,因此通常的选项(如grep或diff)将不起作用。

基本上,我认为我需要写一些读取A.csvB.csv行的内容,并检查两行中是否存在所有字段,与顺序无关。或者,在读取行之后对字段进行排序。

2 个答案:

答案 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命令行 - 这对于比较文件非常有用。