Сравните два текстовых файла на Python

#python #file #compare

Вопрос:

У меня есть два входных файла:

one.txt: а а а а а б б б б б б

two.txt b b b c b a a c a a b

У меня есть следующий код:

 with open('two.txt', 'r') as file1:  with open('one.txt', 'r') as file2:  difference = set(file1).difference(file2)  difference.discard('n')  with open('difff.txt', 'w') as file_out:  for line in difference:  file_out.write(line)  

И я получаю результат в виде:

c

Но я хочу иметь что-то вроде:

c

c

Может ли кто-нибудь помочь мне в решении этой проблемы?

Комментарии:

1. Преобразование в наборы дает вам только set(file1) = {'a', 'b'} и set(file2) = {'a', 'b', 'c'} . Вот почему вы получаете 'c' его в качестве выходного. Вы можете получить заданную разницу (которая у вас есть), а затем выполнить итерацию в file2 виде списка элементов в файле и распечатывать или сохранять в переменной каждый раз, когда вы видите элемент из заданной разницы.

2. Пожалуйста, опишите, что вы хотите сделать на простом английском языке, только затем покажите вам код. В текущем вопросе мы не можем определить, должны ли первые строки (a для text1, b для text2) быть в результате. Мы также не можем знать, является ли в случае следующих двух файлов («a a», «a a a») ожидаемым результатом «a» или «».

Ответ №1:

С помощью collections.Counter :

 with open('one.txt') as f1, open('two.txt') as f2:  one = Counter(f1.read().split())  two = Counter(f2.read().split())  with open('diff.txt', 'w') as outfile:  for c, i in (two - one).items():  outfile.write(f'{c}n' * i)