首页 > 解决方案 > python比较大文件中的行

问题描述

我需要比较两个 .csv 文件(文件超过 65000 行)。查找不在第二个文件中的行。我正在使用 difflib.ndiff:

for line in difflib.ndiff(text1, text2):
    print(line,)

但我得到了意想不到的结果。该函数找到两个相同的字符串并将它们标记为不同:

+ Gr4,DQ_3Gb_1m_DR_926_23489,100,,,70,,
- Gr4,DQ_3Gb_1m_DR_926_23489,100,,,70,,
  1. 可能是什么问题呢?
  2. 什么可能是找到差异的合适方法?

2.

from itertools import izip_longest
l1 = map(lambda x: x.strip(), list(open('test1.txt')))
l2 = map(lambda x: x.strip(), list(open('test2.txt')))
diff_list = izip_longest(l1, l2)
for diff in diff_list:
    print '%s %s %s' % (
        diff[0] or '', 
        '==' if diff[0] == diff[1] else '!=',
        diff[1] or '',
    )

我尝试使用以下代码来比较文件,但我得到了同样的意外结果,为什么会这样?

Gr4,DQ_1Gb_1m_DR_926_23486,100,,,70,,!=Gr4,DQ_3Gb_1m_DR_926_23489,100,,,70,,
Gr4,DQ_3Gb_1m_DR_926_23489,100,,,70,,!=Gr4,DQ_1Gb_1m_DR_926_23486,100,,,70,,

标签: pythonpython-3.xcomparedifferencedifflib

解决方案


当您使用 pandas 时,这很容易。由于您没有提供数据集。我会用我自己的。

假设,我有两个 csv。

在此处输入图像描述

数据如下所示:

在此处输入图像描述

现在打印第二个文件中不存在的行(第二个文件中不存在 benz 模型):

在此处输入图像描述


推荐阅读