Создание представления истории изменений текста в Python - PullRequest
2 голосов
/ 01 мая 2010

У меня есть две версии фрагмента текста, и я хочу создать представление HTML его ревизии, аналогичное тому, которое отображает Документы Google или Переполнение стека. Мне нужно сделать это на Python. Я не знаю, как называется этот метод, но я предполагаю, что у него есть имя, и, надеюсь, есть библиотека Python, которая может это сделать.

Версия 1:

Уильям Генри "Билл" Гейтс III (родился 28 октября 1955 г.) [2] - американец деловой магнат, филантроп и председатель [3] Microsoft, программное обеспечение Компания, которую он основал с Полом Алленом.

Версия 2:

Уильям Генри "Билл" Гейтс III (родился 28 октября 1955 г.) [2] это бизнес магнат, филантроп, и председатель [3] Microsoft, программное обеспечение Компания, которую он основал с Полом Алленом. Он американец.

Желаемый вывод:

Уильям Генри "Билл" Гейтс III (родился 28 октября 1955 г.) [2] - бизнес n American магнат, филантроп, и председатель [3] Microsoft, программное обеспечение Компания, которую он основал с Полом Алленом. Он американец.

Использование команды diff не работает, потому что она говорит мне, какие строки отличаются, а какие столбцы / слова отличаются.

$ echo 'William Henry "Bill" Gates III (born October 28, 1955)[2] is an American business magnate, philanthropist, and chairman[3] of Microsoft, the software company he founded with Paul Allen.' > oldfile
$ echo 'William Henry "Bill" Gates III (born October 28, 1955)[2] is a business magnate, philanthropist, and chairman[3] of Microsoft, the software company he founded with Paul Allen.  He is American.' > newfile
$ diff -u oldfile newfile
--- oldfile 2010-04-30 13:32:43.000000000 -0700
+++ newfile 2010-04-30 13:33:09.000000000 -0700
@@ -1 +1 @@
-William Henry "Bill" Gates III (born October 28, 1955)[2] is an American business magnate, philanthropist, and chairman[3] of Microsoft, the software company he founded with Paul Allen.
+William Henry "Bill" Gates III (born October 28, 1955)[2] is a business magnate, philanthropist, and chairman[3] of Microsoft, the software company he founded with Paul Allen.  He is American.' > oldfile

Ответы [ 3 ]

1 голос
/ 01 мая 2010

Google Diff Merge Patch имеет довольно хорошую реализацию diff в чистом Python.

0 голосов
/ 01 мая 2010

Модуль difflib может помочь с этой проблемой.

0 голосов
/ 01 мая 2010

Вы можете использовать wdiff . Я не знаю, есть ли реализация Python:

$ wdiff oldfile newfile
William Henry "Bill" Gates III (born October 28, 1955)[2] is [-an American-] {+a+} business magnate, philanthropist, and chairman[3] of Microsoft, the software company he founded with Paul Allen.  {+He is American.+}
...