0

如何创建两个 json 对象的差异,以便它们采用可以发送到审查板的手动差异格式?我需要从 python 脚本中生成差异。我认为手动差异是使用“diff file1 file2”命令行实用程序生成的。我可以使用 difflib 生成类似的评论板兼容差异吗?还是我需要使用另一个库?谢谢!

4

2 回答 2

1

使用 difflib:

def show_diff(seqm):
    output= []
    for opcode, a0, a1, b0, b1 in seqm.get_opcodes():
        if opcode == 'equal':
            output.append(seqm.a[a0:a1])
        elif opcode == 'insert':
            output.append("<ins>" + seqm.b[b0:b1] + "</ins>")
        elif opcode == 'delete':
            output.append("<del>" + seqm.a[a0:a1] + "</del>")
        elif opcode == 'replace':
            output.append("<del>" + seqm.a[a0:a1] + "</del>" + "<ins>" + seqm.b[b0:b1] + "</ins>" )
        else:
            raise RuntimeError, "Unexpected opcode"
    return ''.join(output)

在您的情况下,您比较您的 json 文件(我只是使用了虚拟文本):

In [4]: sm = difflib.SequenceMatcher(None, 'hello', 'hello world')

In [6]: diff = show_diff(sm)

In [7]: diff
Out[7]: 'hello<ins> world</ins>'

如果您需要 difflib 的不同输出,请查看文档

于 2012-10-26T03:25:38.213 回答
1

我只是认为在通过差异之前,您应该重新格式化 JSON 对象,让我们按照字母和数字顺序说。

于 2012-10-26T03:34:26.793 回答