Создайте список строк, представляющих разницу между двумя текстовыми файлами - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть два текстовых файла. Я хочу найти процентную разницу между этими двумя файлами, основываясь на разных строках этих файлов. Я могу использовать количество строк в списке, а затем количество строк в двух файлах, чтобы вычислить разницу в процентах (если нет какой-либо встроенной функции python, которая делает это). Например,

Файл 1:

apple
ball
cat
dog

Файл 2:

ball
cat
elephant

Результирующий список:

[apple, dog, elephant]

Что будет самым простым и самый быстрый способ сделать это?

1 Ответ

1 голос
/ 17 февраля 2020

Это зависит от того, как вы определяете «разницу между двумя текстовыми файлами». Предполагая, что этот порядок не имеет значения для вас, и вы просто хотите найти строки из двух файлов, которые не появляются в другом, вот одно из возможных решений:

set_1 = {line.strip() for line in open(file_1_path, 'r').readlines()}
set_2 = {line.strip() for line in open(file_2_path, 'r').readlines()}
difference = (set_1 | set_2) - (set_1 & set_2)

Для различий в совпадении последовательностей вы может difflib , как предложено wjandrea . Вы можете использовать это так:

import difflib
list_1 = [line.strip() for line in open(file_1_path, 'r').readlines()]
list_2 = [line.strip() for line in open(file_2_path, 'r').readlines()]
difference = [line[2:] for line in difflib.ndiff(list_1, list_2) if line[0] in {'+', '-'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...