2013-02-04 29 views
0

我想比較兩個字符串列表之間的差異。對我而言,空白是噪音,不需要顯示這些差異。讀入difflib's documentation「,默認[charjunk]是模塊級函數IS_CHARACTER_JUNK(),它過濾掉了空白字符」。完美,除非我沒有看到它的工作,或有很大的不同(< - 雙關!)。difflib的charjunk可以用來忽略空白嗎?

import difflib 
A = ['3 4\n'] 
B = ['3 4\n'] 
print ''.join(difflib.ndiff(A, B)) # default: charjunk=difflib.IS_CHARACTER_JUNK 

輸出:

- 3 4 
? - 
+ 3 4 

我已經嘗試了一些其他linejunk選項,但沒有實際忽略差異空白的結果。對於charjunk的用途,我有錯誤的解釋嗎?

作爲一個方面說明,我可以通過預處理我的字符串來將這種限制旁觀化,以使用re.sub(r'\W+', ' ', 'foo\t bar')將多個空白字符替換爲單個空格字符。

回答

0

我遇到了同樣的問題,使用difflib.Differ()。

這個link解釋了與Differ()的問題,我想ndiff()的問題是相似的。