我正在尝试制作一份综合性的差异报告,用于比较两个程序的命令行输出。我使用了 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
代替
我为我的差异函数制作了一个简单的测试:
注:本文中出现的HTML标签已保留。
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
注意第一行上的两个^
符号?它们指向什么...?此外,我故意在一个测试字符串中加入了尾随换行符。我不认为diff注意到了这一点。
如何使输出全面或学会理解它?