Skip to main content
 首页 » 编程设计

python之比较 2 个文本文件中的行

2025年05月04日30bonelee

我有两个大型文本文件(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))