为什么Python中difflib库中的unified_diff方法会遗漏一些字符?

Shi*_*ani 6 python unified-diff difflib

我正在尝试检查线路之间的差异。这是我的代码:

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
Run Code Online (Sandbox Code Playgroud)

它打印:

---
+++ 

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

 d
 e
 f
+g
+i
+k
+l
+m
+n
Run Code Online (Sandbox Code Playgroud)

“a”、“b”和“c”发生了什么?谢谢!

aha*_*jib 8

如果您查看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
Run Code Online (Sandbox Code Playgroud)

将生成:

--- 

+++ 

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

 a
 b
 c
 d
 e
 f
+g
+i
+k
+l
+m
+n
Run Code Online (Sandbox Code Playgroud)