ライブラリを使用して、2 つの json ファイル間の差分を推定しています。私のコードはそれらを辞書にロードし、datadiffを使用して 2 つのデータ構造の違いを取得します。問題は、次の出力をさらに処理したいということです:
datadiff.diff
2 つのデータ構造で見つかった差分の html を作成します。それを行うには、コマンドの出力を処理して行に分割する必要があります。次に、行が + で始まる場合、出力を比較する 2 番目のファイルを参照する必要があることがわかります。行が - で始まる場合は、それを最初のファイルに関連付ける必要があります。マイコード:
out = datadiff.diff(t[0].get("key"),t[1].get("key"))
for line in out:
if str(line).startswith("+"):
f.write(str(line)+"<br/>")
if str(line).startswith("-"):
f.write(str(line)+"<br/>")
このコードは私に TypeError を与えます:
for line in out:
TypeError: 'DataDiff' object is not iterable
datadiff.diff 全体を文字列に変換できますが、1 行の文字列に変換されるため、すべての行を取得するために分割する必要があります。
out = str(datadiff.diff(t[0].get("key"),t[1].get("key")))+"<br/>"
データ差分出力:
diff in key:
--- a
+++ b
[
@@ -0,1 +0,1 @@
-{u'origin': u'NORMAL', u'score': 100, u'type': u'FEELINGS', u'name': u'sentiment negativo', u'children': [u'reato']},
{u'origin': u'NORMAL', u'score': 100, u'type': u'FEELINGS', u'name': u'sentiment neg', u'children': [u'reato']},
+{u'origin': u'NORMAL', u'score': 50, u'type': u'FEELINGS', u'name': u'sentiment negativo', u'children': [u'reato']},
]