0

レビューボードに送信できる手動差分形式になるように、2 つの json オブジェクトの差分を作成するにはどうすればよいですか? Pythonスクリプト内から差分を生成する必要があります。手動差分は、「diff file1 file2」コマンドラインユーティリティを使用して生成されると思います。difflib を使用して、同様のレビューボード互換の diff を生成できますか? または、使用する必要がある別のライブラリがありますか? ありがとう!

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

diff を実行する前に、JSON オブジェクトを再フォーマットして、アルファベット順と数字順に言う必要があると思います。

于 2012-10-26T03:34:26.793 に答える