如何只比较包含相同列信息的两个文件的一部分?
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()
我正在尝试比较两个模型输出文件,但模型模拟具有不同的日期范围,因此我需要根据相似的模拟日期来比较文件。下面是我正在比较的文件的图像。具体来说,我需要在两个文件中的 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()