difflib的charjunk可以用来忽略空格吗?

时间:2013-02-04 22:02:19

标签: python whitespace difflib

我想比较两个字符串列表之间的差异。就我的目的而言,空白是噪音,不需要显示这些差异。阅读difflib's documentation,“默认[charjunk]是模块级函数IS_CHARACTER_JUNK(),它会过滤掉空格字符”。完美,除了我看不到它有效,或者有很大的不同(< - pun!)。

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')将多个空白字符替换为单个空格字符来支持这一限制。

1 个答案:

答案 0 :(得分:-1)

我使用difflib.Differ()遇到了同样的问题。

这个link解释了Differ()的问题,我想ndiff()的问题是类似的。