如何只比较包含相同列信息的两个文件的一部分?

How to compare only a portion of two files containing the same column information?

我正在尝试比较两个模型输出文件,但模型模拟具有不同的日期范围,因此我需要根据相似的模拟日期来比较文件。下面是我正在比较的文件的图像。具体来说,我需要在两个文件中的 2010-1-1 开始比较。我不想简单地跳过第二个文件的第一行,因为我希望能够对具有不同日期范围运行的多个模型

使用比较方法

我已经使用 difflib 比较了文件,但无法弄清楚如何 运行 仅基于相似的日期条目进行比较。

for line in difflib.unified_diff(dif1, dif2):
    print (line)

使用上面的方法我得到所有行都不一样。

文件可以在这里下载。 https://www.dropbox.com/sh/tg6y16gix7ran42/AADpMNcZd2ugPQ28Z30Bj9bWa?dl=0

difflib 逐行比较两个文件。它不关心数据的含义,只直接比较文本。为了做你想做的事,你需要自己编写代码来解析文件,然后比较你想比较的部分。我建议您首先使用标准 csv 包或 pandas 编写解析器。然后你应该开发一个算法来比较这两个数据结构。首先用文字描述比较它们的步骤。然后将这些词翻译成代码。

试试这个:

def first_file():

    while True:
        x = int(input('Column: '))
        if x == 0:
            break
        with open('test.txt', 'r') as f:
            for line in f:
                if 'tide' in line or 'Date' in line:
                    pass
                else:
                    a = line.split()
                    compare(a,x)
                        

    
def compare(a,x):
    with open('test1.txt', 'r') as f1:
        for line1 in f1:
            if 'tide' in line1 or 'Date' in line1:
                pass
            else:
                b = line1.split()
                if a[1] == b[1]:
                    if a[x+2] != b[x+2]:
                        print(a[1])
                        print(a[x+2] + ' != ' + b[x+2])
    return

first_file()