Генерация и применение diffs в Python

Существует ли 'out-of-the-box' путь в Python для генерации списка различий между двумя текстами и затем применения этой разности в один файл для получения другого, позже?

Я хочу сохранить историю пересмотра текста, но я не хочу сохранить весь текст для каждого пересмотра, если существует только единственная отредактированная строка. Я посмотрел на difflib, но я не мог видеть, как генерировать список просто отредактированных строк, которые могут все еще использоваться для изменения одного текста для получения другого.

28
задан ire_and_curses 21 February 2010 в 21:24
поделиться

4 ответа

Вы смотрели diff-match-patch из Google? Очевидно, что Google Docs использует этот набор алгоритмов. Он включает не только модуль сравнения, но и модуль исправлений, поэтому вы можете сгенерировать самый новый файл из старых файлов и различий.

Включена версия для Python.

http://code.google.com/p/google-diff-match-patch/

26
ответ дан 28 November 2019 в 03:28
поделиться

Хотите ли вы difflib.unified_diff? Пример здесь .

11
ответ дан 28 November 2019 в 03:28
поделиться

AFAIK большинство алгоритмов сравнения используют простое совпадение Самая длинная общая подпоследовательность , чтобы найти общую часть между двумя текстами, и все, что осталось, считается разницей. Не должно быть слишком сложно создать собственный алгоритм динамического программирования для достижения этой цели в python, страница википедии выше также предоставляет алгоритм.

2
ответ дан 28 November 2019 в 03:28
поделиться

Это должно быть решение на Python?
Мои первые мысли относительно решения были бы использовать либо систему контроля версий (Subversion, Git и т. Д.), Либо diff Утилиты / patch , которые являются стандартными для системы unix или являются частью cygwin для систем на базе Windows.

1
ответ дан 28 November 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: