如何解决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 举报,一经查实,本站将立刻删除。