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