如何創建兩個json對象的差異,使它們處於手動比較格式,可以將其發送到評論板?我需要從python腳本內部生成diff。我認爲手動diff是使用「diff file1 file2」命令行實用程序生成的。我可以使用difflib生成類似的兼容reviewboard的diff嗎?還是有另一個我需要使用的庫?謝謝!如何在兩個可以使用python發送到Reviewboard的Json對象之間創建手動差異?
0
A
回答
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>'
看那documentation如果你需要從difflib的不同輸出
+0
感謝羅布,我會給這個去! – user1427026
+0
希望它有助於:-) –
1
我只是想通過diff之前,你應該重新格式化JSON對象讓我們說按字母和數字順序。
相關問題
- 1. 如何找到兩個JavaScript對象數組之間的差異?
- 2. Python - 計算兩個datetime.time對象之間的差異
- 3. 在Python中使用散列獲取兩個對象列表之間的差異
- 4. 如何創建兩個排序的observables之間的差異observable?
- 5. 使用LINQ查找兩個數據對象之間的差異
- 6. 使用KnpTimeBundle返回兩個DateTime對象之間的差異
- 7. 僅在兩個文件之間發生差異時才發送差異輸出
- 8. 兩個日期之間的差異python
- 9. 創建使用兩列之間的差異在大熊貓
- 10. 如何創建手動差異?
- 11. 如何計算兩個DateTime對象之間的差異(以天爲單位)?
- 12. 如何計算兩個Zend_Date對象之間的差異,以月爲單位
- 13. 兩個時間對象之間的差異
- 14. 計算兩個時間戳對象之間的差異java
- 15. 找到兩個值之間的差異?
- 16. 如何在幾個月內計算兩個ActionScript Date對象之間的差異?
- 17. 如何創建兩列之間的差異列?
- 18. 如何獲取兩個JSON之間的差異?
- 19. 根據特定列在兩個文件之間創建差異
- 20. 可能重複值的兩個列表之間的Python差異
- 21. 如何在java中找到兩個arraylist之間的差異
- 22. 如何在兩個對象之間創建共享部分
- 23. Python熊貓:兩週之間的差異?
- 24. 計算兩次python之間的差異
- 25. 差異在Django對象創建調用
- 26. 對象創建差異
- 27. 對象創建差異
- 28. Actionscript - 獲取兩個對象之間的差異
- 29. 天內兩個LocalDateTIme對象之間的差異
- 30. 獲取兩個日期對象之間的小時差異?
我不知道reviewboard採用的格式,但是如果區分JSON,請確保按照特定的定義順序發出鍵以獲得最佳結果(這將根據JSON生成器而變化,因爲字典在技術上是無序的) 。 – 2012-10-26 03:19:16
感謝您的提示! python中有沒有內置的diff庫,你會建議嗎?會像difflib.context_diff工作? – user1427026
只要添加評論板使用Myers Diff,我認爲他們應該能夠處理顯示我的並排json diff,一旦我給他們一個prudely生成的手動差異。然而,我不能找出我需要發送它們的格式:((python相當於命令行diff我猜)鍵提示是有用的,但因爲它的JSON和不是文本差異我會記住我的JSON差異按預期生成! – user1427026