问题描述
我在这里查看了类似问题的一些答案,但是我想我仍然不了解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 (将#修改为@)