Сравнить строки двух файлов txt Python
Ребят у меня есть 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)
Ответы (4 шт):
with open('1.txt') as f1:
txt1=f1.read()
with open('2.txt') as f2:
txt2=f2.read()
with open('good.txt','w') as fg:
for el1 in txt1.split():
for el2 in txt2.split():
if el1==el2 and el1!='':
fg.write(el1+'\n')
Открываем 1.txt и 2.txt перебираем строки, если полное совпадение, записываем в файл good.txt
В 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 в этом вопросе.
Я бы допилил так: из 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)
Можно сделать так:
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().