2014-12-11 1 views
0

У меня есть следующая проблема. Я изменил некоторые части онлайн-артикуля.
Впоследствии, другие люди начинают редактирование онлайн-артикула.Наблюдать за изменениями в тексте?

Теперь я пытаюсь запустить код с питоном, который идентифицирует, если ребята после меня что-то изменили (и сколько, измерено в добавленных/удаленных символах) в той части, которую я изменил.

Для примера: Текст был: Hello Wolrd! Что случилось сегодня? Goodbye Я сменил текст на: Hello Wolrd! Что случилось сегодня? Сегодня я написал экзамен. Goodbye The Guy after me отредактировал: Hello Wolrd! Что случилось сегодня? Сегодня я написал математический экзамен. До свидания

Теперь код должен идентифицировать, что она изменила «n math» и выдала мне, сколько процентов моего редактирования она изменила. В этом случае: Около 20%.

Я начинаю использовать «difflib», но теперь я понял, что код не имеет смысла. Мой код сделал следующее: С difflib, я выяснил места в тексте, который я изменил. @@ -1,4 +1,4 @@
После этого я проверил строки, которые меня заменял таким же образом. @@ -1,6 +1,6 @@. После этого я сравнивал, если строки одинаковы (+ значение равно - значение). Но теперь я понял, что это не сработает. Если парень после меня начнет редактирование в середине моей измененной части.

У кого-нибудь есть ключ, как это сделать?

ответ

0

Библиотека матч заплатки (модуль diff_match_patch) производит более чистый выход и проще понять:

взяты из официальных документов:

diff_main("Good dog", "Bad dog") => [(-1, "Goo"), (1, "Ba"), (0, "d dog")] 

С фактическим кодом:

from diff_match_patch import diff_match_patch 
D = diff_match_patch() 
D.diff_main("Good dog", "Bad dog") 

a '-1' является удалением

a '1' является дополнением

'0' означает, что изменение

См: https://code.google.com/p/google-diff-match-patch/wiki/API

+0

Я пытался использовать diff_main. Но произошла ошибка, у объекта «module» нет атрибута «diff_main» –

+0

Я отредактировал ответ с более подробной информацией –

+0

Спасибо, получив это правильно. У меня есть лучший обзор изменений. Затем я могу определить, что я меняю, и что изменил парень после меня. Но как я могу выяснить, изменил ли меня после меня парень после меня? –