Отбросьте понятия «файлы» на секунду и подумайте о данных.
У вас есть две группы текстовых данных, одна из которых представляет собой один столбец, а другая - два столбца, верно?Предположим, на секунду вы можете разделить текст на два столбца, в действительности у вас есть три списка (после преобразования строк в целые числа, скажем):
c1 = [random.randint(0,100) for i in range(100)]
c2 = [random.randint(0,100) for i in range(100)]
c3 = [random.randint(0,100) for i in range(100)]
Если я понимаю, вы хотите посчитатьинтервал попадания данных в с1 в с2 и с3, верно?Теперь сосредоточьтесь на том, что такое «хит».Если у вас 3
в с1, и у вас [1,3,5,5,3,10]
в с2, сколько хитов это?Только 3 х?Интервал между 1,3,5?Или интервал 1,3,5,5,3?Или все вышеперечисленное.
В качестве простого примера, с приведенными выше списками случайных чисел int, он печатает каждое int в c1, которое встречается как в c2, так и в c3:
for i in c1:
if i in c2 and i in c3:
print i
Как только вы определите, что такое «хит»есть, эта базовая структура будет работать.Как только у вас есть базовые данные и структура «хита», вернитесь и разберитесь с файлами.Должно быть легко тогда.
Редактировать: Если Я понимаю, что вы пытаетесь сделать (а это огромный , если ), это фреймворк:
with open("file2.txt") as val_file:
for val_line in val_file:
val_elems=val_line.split()
with open("file1.txt") as int_file:
for int_line in int_file:
int_elems=int_line.split()
if (int_elems[0] == val_elems[0] and
int_elems[1] > val_elems[1] and
int_elems[1] < val_elems[2]):
print val_line
При использовании данных примера: elem1 1 57898
Мне не ясно, пытаетесь ли вы 1) позиционно сравнивать два файла построчно или 2)если вы читаете каждую строку файла 2 и сравниваете ее со всеми строками файла 1. Пример, приведенный здесь, делает позже.