difflib-忽略带ndiff的空白diffs?

问题描述

在这里查看了类似问题的一些答案,但是我想我仍然不了解difflib.ndiff()的工作方式?

我之所以特别关注ndiff,是因为该文档暗示认情况下diff将忽略空格更改。

这是一个简单的程序,我希望Differ中的行(即difflib.ndiff()的返回值)为空:

import difflib

# a simple set of lines
A_LInes = [
    'Line 1','Line 2',]

# should be same as A_LInes if whitespace is ignored
B_LInes = [
    '  Line 1','  Line 2',]

def test_2(a,b):
    # differ = difflib.ndiff(a,b)
    differ = difflib.ndiff(a,b,charjunk=difflib.IS_CHaraCTER_JUNK)
    for line in differ:
        print(line)

def main(a_fn,b_fn):
    test_2(A_LInes,B_LInes)


if __name__ == '__main__':
    main()

difflib.IS_CHaraCTER_JUNK()似乎只是一个True' '上返回'\t'的谓词,否则返回False。无论您是通过显式调用ndiff()调用IS_CHaraCTER_JUNK,还是接受认值而不提及charjunk参数,我都会得到相同的输出

- Line 1
+   Line 1
? ++

- Line 2
+   Line 2
? ++

那不是我期望忽略空白的差异的输出。 给定ndiff的文档,这对我来说似乎是非常意外的(请参阅:https://docs.python.org/3/library/difflib.html)。文档是否完好,奇怪或错误,或者我只是不了解某些内容

如何调用ndiff(),以使本例的'differ'生成器中没有行?

任何人都有助于更好地了解如何"ignore whitespace"-type diffs

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)