Если test1.txt
и test2.txt
содержат текст из вашего вопроса, то этот скрипт:
with open('test1.txt', 'r') as f1, open('test2.txt', 'r') as f2:
i1 = [line.split()[:-1] for line in f1 if line.strip().startswith('-')]
i2 = (line.split() for line in f2 if line.strip().startswith('-'))
missing = [line for line in i2 if line[:-1] not in i1]
for _, *line in missing:
print(' '.join(line))
Выводит:
Bob #0061 20 USA 2
РЕДАКТИРОВАТЬ: Если файл не содержит -
в начале строк, тогда этот скрипт:
with open('test1.txt', 'r') as f1, open('test2.txt', 'r') as f2:
i1 = [line.split()[:-1] for line in f1 if line.strip()]
i2 = (line.split() for line in f2 if line.strip())
missing = [line for line in i2 if line[:-1] not in i1]
for line in missing:
print(' '.join(line))
Выводит:
Bob #0061 20 USA 2
EDIT 2: для сравнения только первых 3 столбцов, вы можете использовать этот пример (обратите внимание на [:3]
):
with open('file1.txt', 'r') as f1, open('file2.txt', 'r') as f2:
i1 = [line.split()[:3] for line in f1 if line.strip()]
i2 = (line.split() for line in f2 if line.strip())
missing = [line for line in i2 if line[:3] not in i1]
for line in missing:
print(' '.join(line))
Ничего не печатает для новых файлов примеров, которые у вас есть в вопросе.