Сравнить строки двух файлов txt Python

Рейтинг: 2Ответов: 3Опубликовано: 15.02.2023

Ребят у меня есть 1.txt и 2.txt, как мне взять проверить все строки на совпадение с 2.txt и если есть совпадение то записать в good.txt, в гугле похожее нашёл ну не понял как допилить.

end_list = open('1.txt','w')
listdir = open('2.txt')
order_set = set(open('order_fix.txt').readlines())

for line in listdir.readlines():
   if line in order_set:
       end_list.write(line)

Ответы

▲ 1

В Python у множеств есть функция intersection, которая позволяет получить пересечение двух множеств.

Можно считать два файла, преобразовать список строк в два отдельных множества, после чего получить совпадающие строки при помощи этой функции.

И да, лучше при открытии файла использовать контекстный менеджер with, который автоматически закрывает файл по завершению работы, что позволит не тратить лишние ресурсы.

with open('1.txt', 'r') as end_list, open('2.txt', 'r') as listdir:
    equal_strings = set(end_list).intersection(listdir)

with open('good.txt', 'w') as f:
    for line in equal_strings:
        f.write(line)

Подсмотрел решение на англоязычном SO в этом вопросе.

▲ 1

Я бы допилил так: из 2.txt делаем можество хороших строк. Открываем 1.txt на чтение и good.txt на запись. Переписываем строку из 1.txt в good.txt если она "хороша" - если она есть в множестве good:

with open('2.txt') as f2:
    good = set(f2)

with open('1.txt') as f1, open('good.txt', 'w') as fg:
    for line in f1:
        if line in good:
            fg.write(line)
▲ 1

Можно сделать так:

with open('1.txt', 'r') as file1, open('2.txt', 'r') as file2, open('good.txt', 'w') as good_file:
    set1 = set(line.strip() for line in file1)
    set2 = set(line.strip() for line in file2)
    intersection = set1.intersection(set2)
    for line in intersection:
        good_file.write(line + '\n')

Этот код открывает три файла: 1.txt, 2.txt и good.txt. Затем он создает множества set1 и set2 из строк в файлах 1.txt и 2.txt соответственно, удаляя переносы строк с помощью метода strip(). Затем находит пересечение множеств с помощью метода intersection() и записывает найденные строки в файл good.txt с помощью цикла for и метода write().