Python - печать строк, которая существует в 2 файлах
У меня есть 2 файла, содержащие несколько строк, fileA.txt
а также fileB.txt
,
fileA.txt:
hello hi
how
fileB.txt:
hello how are you
Я пытаюсь написать программу, которая увидит, существует ли строка в обоих файлах. Если это так, выведите строку или несколько строк.
Результаты будут выводить "привет" и "как", поскольку они существуют в обоих файлах.
У меня возникают проблемы при выполнении этого, так как я смог работать только с определенными мной строками, а не с неизвестными строками в файле:
with open("fileA.txt", 'r') as fileA, open ("fileB.txt") as fileB:
for stringsA in fileA:
for stringsB in fileB:
if stringsA in stringsB:
print("true")
Любая помощь будет оценена.
3 ответа
Файлы повторяются по строкам, а не по словам. Вам придется разделить слова:
>>> with open('fileA.txt') as a, open('fileB.txt') as b:
... a_words = set(a.read().split())
... b_words = set(b.read().split())
... print('\n'.join(a_words & b_words))
...
hello
how
Сначала вы хотите получить список всех уникальных строк в fileA
, Затем получите аналогичный уникальный список для fileB
, Тогда сравните два. С помощью set
Это делает сравнение проще.
def get_strings_from_file(f):
return set([s.strip() for s in f.read().split() if s.strip()])
def main():
with open("fileA.txt", 'r') as fileA, open ("fileB.txt") as fileB:
stringsA = get_strings_from_file(fileA)
stringsB = get_strings_from_file(fileB)
return stringsA.intersection(stringsB)
Простым решением было бы создать список отдельных слов для каждого файла и проверить общие слова.
Тип данных Python Set будет очень полезен в этом случае. https://docs.python.org/3.6/library/stdtypes.html