Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python difflib-忽略空白diff w/ndiff()?_Python_Diff_Difflib - Fatal编程技术网

Python difflib-忽略空白diff w/ndiff()?

Python difflib-忽略空白diff w/ndiff()?,python,diff,difflib,Python,Diff,Difflib,我在这里查看了一些类似问题的答案,但我想我仍然不了解difflib.ndiff()的工作方式 我特别关注ndiff,因为文档暗示,默认情况下,diff将忽略空白更改 下面是一个简单的程序,我希望different中的行(即,difflib.ndiff())的返回值为空: import difflib # a simple set of lines A_LINES = [ 'Line 1', 'Line 2', ] # should be same as A_LINES if

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

我特别关注
ndiff
,因为文档暗示,默认情况下,diff将忽略空白更改

下面是一个简单的程序,我希望different中的行(即,
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\u CHARACTER\u JUNK()
似乎只是一个谓词,在
'
'\t'
上返回
True
,否则返回
False
。无论您是通过显式调用
IS\u CHARACTER\u JUNK
来调用
ndiff()
,还是接受默认值而不提及
charjunk
参数,我都会得到相同的输出:

-第1行
+第1行
? ++
-第2行
+第2行
? ++
这不是我所期望的忽略空白的diff的输出。 考虑到ndiff的文档(请参阅:),这对我来说似乎非常意外。文档是否关闭、奇怪、错误,或者我只是不理解某些东西

如何调用
ndiff()
,以使本例中的“different”生成器中没有行


非常感谢任何有助于更好地理解如何执行
“忽略空白”-类型的diff

difflib关于“垃圾”的概念没有很好的文档记录(通常是其算法),但是“垃圾”实际上并没有被忽略。我不认为difflib有任何忽略差异的功能。使用ndiff接受默认函数(将空格和制表符视为垃圾)与显式提供函数(如果不忽略差异,该函数将无条件返回False)有什么区别?如果这些差异仍然没有被忽略,我不明白将某些字符视为“垃圾”意味着什么?difflib的“垃圾”概念没有很好的文档记录(其算法一般也是如此),但“垃圾”实际上并没有被忽略。我不认为difflib有任何忽略差异的功能。使用ndiff接受默认函数(将空格和制表符视为垃圾)与显式提供函数(如果不忽略差异,该函数将无条件返回False)有什么区别?我不明白,如果这些差异仍然没有被忽略,那么将某些角色视为“垃圾”意味着什么?