2016-07-22 5 views
1

Я пытаюсь проверить различия между строками. Это мой код:Почему метод unified_diff из библиотеки difflib в Python не содержит символов?

from difflib import unified_diff 

s1 = ['a', 'b', 'c', 'd', 'e', 'f'] 
s2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'i', 'k', 'l', 'm', 'n'] 

for line in unified_diff(s1, s2): 
    print line 

Он печатает:

--- 
+++ 

@@ -4,3 +4,9 @@ 

d 
e 
f 
+g 
+i 
+k 
+l 
+m 
+n 

Что случилось с 'а', 'B' и 'с'? Благодаря!

+1

Они не изменились, так что нет никаких причин, чтобы показать их. –

+0

Но почему показывают 'd', 'e' и 'f'? – Shivani

+1

Чтобы дать контекст diff. Обычно вы делаете это с помощью текста или кода, где полезно видеть строки, ведущие к измененным. –

ответ

0

Если вы посмотрите на unified_diff коде, который вы найдете описание параметра называется n:

Унифицированных дифференциалы являются компактным способом, показывающие изменений линии и несколько строки контекста. Количество строк контекста задается как «n», которое по умолчанию .

В вашем случае n в основном указывает количество символов. Если вы присвоите значение n, вы получите правильный результат. Этот код:

from difflib import unified_diff 

s1 = ['a', 'b', 'c', 'd', 'e', 'f'] 
s2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'i', 'k', 'l', 'm', 'n'] 

for line in unified_diff(s1, s2,n=6): 
    print line 

будет генерировать:

--- 

+++ 

@@ -1,6 +1,12 @@ 

a 
b 
c 
d 
e 
f 
+g 
+i 
+k 
+l 
+m 
+n