我使用庫來推斷兩個json文件之間的差異。我的代碼將它們加載到字典中,然後使用datadiff來獲得兩個數據結構之間的差異。問題是,我想進一步處理輸出:用python推斷差異
datadiff.diff
使兩個數據結構中找到差異的html。爲了做到這一點,我必須處理命令的輸出並將其分成幾行。然後,如果行以+開始,我知道輸出必須被引用到比較的第二個文件中,如果行開頭 - 那麼我必須將它歸入第一個文件。 mycode的:
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/>")
此代碼gices我一個類型錯誤:
for line in out:
TypeError: 'DataDiff' object is not iterable
我可以改造整個datadiff.diff在一個字符串,但隨後我必須以某種方式把它分解得到的所有行,因爲它會轉換到一個單一的線串:
out = str(datadiff.diff(t[0].get("key"),t[1].get("key")))+"<br/>"
Datadiff輸出:
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']},
]
,因爲我們不知道它是什麼樣子 – ThinkChaos
發佈的diff結果 – softwareplay