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