Существует ли 'out-of-the-box' путь в Python для генерации списка различий между двумя текстами и затем применения этой разности в один файл для получения другого, позже?
Я хочу сохранить историю пересмотра текста, но я не хочу сохранить весь текст для каждого пересмотра, если существует только единственная отредактированная строка. Я посмотрел на difflib, но я не мог видеть, как генерировать список просто отредактированных строк, которые могут все еще использоваться для изменения одного текста для получения другого.
Вы смотрели diff-match-patch из Google? Очевидно, что Google Docs использует этот набор алгоритмов. Он включает не только модуль сравнения, но и модуль исправлений, поэтому вы можете сгенерировать самый новый файл из старых файлов и различий.
Включена версия для Python.
AFAIK большинство алгоритмов сравнения используют простое совпадение Самая длинная общая подпоследовательность , чтобы найти общую часть между двумя текстами, и все, что осталось, считается разницей. Не должно быть слишком сложно создать собственный алгоритм динамического программирования для достижения этой цели в python, страница википедии выше также предоставляет алгоритм.
Это должно быть решение на Python?
Мои первые мысли относительно решения были бы использовать либо систему контроля версий (Subversion, Git и т. Д.), Либо diff Утилиты
/ patch
, которые являются стандартными для системы unix или являются частью cygwin
для систем на базе Windows.