Почему метод 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

Что случилось с "a", "b" и "c"? Спасибо!

1 ответ

Если вы посмотрите на 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
Другие вопросы по тегам