#python #diff
#питон #разница #python
Вопрос:
Я пытаюсь сравнить два выходных файла модели, но моделирование модели имеет разные диапазоны дат, поэтому мне нужно сравнить файлы на основе аналогичных дат моделирования. Ниже приведено изображение файлов, которые я сравниваю. В частности, мне нужно начать сравнение с 2010-1-1 в обоих файлах. Я не хочу просто пропускать первые строки второго файла, потому что я хочу иметь возможность использовать метод сравнения для нескольких запусков модели с разными диапазонами дат
Я сравнил файлы с помощью difflib, но не смог понять, как выполнить сравнения, основанные только на похожих записях даты.
for line in difflib.unified_diff(dif1, dif2):
print (line)
Используя описанный выше метод, я получаю, что все строки разные.
Файлы можно скачать здесь. https://www.dropbox.com/sh/tg6y16gix7ran42/AADpMNcZd2ugPQ28Z30Bj9bWa?dl=0
Ответ №1:
Попробуйте использовать это:
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()
Комментарии:
1. Спасибо, Ктото. Я реализовал код, но я продолжаю получать следующий столбец ошибок: 2010 IndexError: индекс списка вне диапазона. У вас есть какие-нибудь мысли? Я думал о преобразовании его в csv, возможно, это помогло бы
2. Можете ли вы опубликовать используемые вами наборы данных, ваши входные и выходные данные?
3. Файлы сравнения можно найти здесь: dropbox.com/sh/tg6y16gix7ran42/AADpMNcZd2ugPQ28Z30Bj9bWa?dl=0
Ответ №2:
difflib
сравнивает два файла построчно. Он не заботится о значении данных, а сравнивает только текст напрямую. Чтобы сделать то, что вы хотите, вам нужно будет самостоятельно написать код для синтаксического анализа файлов, а затем сравнить части, которые вы хотите сравнить. Я предлагаю вам начать с написания синтаксического анализатора либо со стандартного csv
пакета, либо с pandas
. Затем вам следует разработать алгоритм для сравнения двух структур данных. Начните с словесного описания шагов по их сравнению. Затем переведите эти слова в код.