Как я могу получить все строки в diff, используя diff_match_patch? - PullRequest
1 голос
/ 04 марта 2012

Я использую библиотеку Google diff-match-patch для Python.

Предположим, что я сравниваю эти два файла (перед строкой 'Z' в строке 2 )

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccccccccccccccccccccccccccccccccc

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Zbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccccccccccccccccccccccccccccccccc

Сгенерированный diff:

@@ -50,16 +50,17 @@
 aaaaaaa%0A
+Z
 bbbbbbbb

Проблема в том, что diff не содержит всю строку. Я бы хотел что-то в этом роде :

@@ -50,16 +50,17 @@
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%0A
+Z
 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

Как получить всю строку в diff, используя diff_match_patch?

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Это, по-видимому, FAQ . Транскрипция примера JS в Python приводит к следующему выводу:

@@ -54,65 +54,66 @@
 aaa%0A
-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%0A
+Zbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%0A
 cccc

Что еще не идеально, но немного лучше.

0 голосов
/ 04 марта 2012

попробуйте использовать встроенный в Python difflib http://docs.python.org/library/difflib.html#difflib.ndiff

...