3
我试图做出比较两个程序的命令行输出的综合比较。我用difflib
以及与此代码想出了:如何理解/使用Python difflib输出?
from difflib import Differ
from pprint import pprint
import sys
def readable_whitespace(line):
return line.replace("\n", "\\n")
# Two strings are expected as input
def print_diff(text1, text2):
d = Differ()
text1 = text1.splitlines(True)
text2 = text2.splitlines(True)
text1 = [readable_whitespace(line) for line in text1]
text1 = [readable_whitespace(line) for line in text2]
result = list(d.compare(text1, text2))
sys.stdout.writelines(result)
sys.stdout.write("\n")
一些要求我:
- (明显)应该明确什么是从中输出时是有区别的
- 新线被替换为
\n
,因为它们在我的情况下很重要,并且在导致冲突时必须清晰可见
我做了一个简单的m ŸDIFF功能:
A = "AAABAAA\n"
A += "BBB\n"
B = "AAAAAAA\n"
B += "\n"
B += "BBB"
print_diff(A,B)
为了您的方便,在这里与功能测试合并,这样就可以执行它的文件:http://pastebin.com/BvQw9naa
我不知道这是什么输出试图对我说:
- AAAAAAA\n? ^^
+ AAAAAAA
? ^
- \n+
BBB
注意那两个^
符号在第一行?他们指着什么......?另外,我有意将尾随的新行放入一个测试字符串中。我不认为差异注意到了这一点。
如何使输出综合或学会理解它?
等等......你确定可以安全地假设所有的换行符都可以被替换,然后放在行尾? –
@TomášZato。这不是发生了什么事。输入中的* actual * endline字符正在被转义,因此可以正确比较并在输出中可见。然后纯粹为显示目的添加换行符。 – ekhumoro