有没有办法从Python difflib获得以下输出(尤其是 1,4c1,4 语法)?
diff foo baz
1,4c1,4
< 'asdf'
< 'asdf'
< 'asdf'
< 'asdf'
---
> asdf
> asdf
> asdf
> asdf
答案 0 :(得分:1)
你可以不用doupt使用difflib重新创建所需的语法输出,但可能需要一些不正确的步骤来完美地模拟。
如果不需要此特定输出语法,您可以考虑以下解决方案:
import difflib
def generate_readable_diff_string(str_a, str_b):
return ''.join(
difflib.unified_diff(
str_a.splitlines(True),
str_b.splitlines(True),
lineterm='\n'
)
)
对于你的foo和baz,这个函数会产生以下结果:
---
+++
@@ -1,4 +1,4 @@
-'asdf'
-'asdf'
-'asdf'
-'asdf'
+asdf
+asdf
+asdf
+asdf
答案 1 :(得分:1)
这里有一个很好的实现:https://github.com/glanois/code/blob/master/python/ppt/diff.py
其标题评论说:
此类产生POSIX默认格式的差异(请参阅 http://www.unix.com/man-page/POSIX/1posix/diff/),与...相同 Gnu diff&#34;正常格式&#34; (看到 http://www.gnu.org/software/diffutils/manual/diffutils.html#Normal)。
我用python 2.7测试了它,为你的例子产生了以下输出:
$ python diff.py foo baz
1,4c1,4
< 'asdf'
< 'asdf'
< 'asdf'
< 'asdf'
---
> asdf
> asdf
> asdf
> asdf