2013-11-04 2 views
0

라이브러리를 사용하려고하는데 : Datadiff diff의 출력이 일관성이없는 것처럼 보입니다. 나는 두 개의 json을 분석하고, 그들 중 일부 사전을 만든 다음 사전을 비교합니다. 그러나 첫 번째 파일의 경우 출력에 모든 객체가 변경된 것으로 표시되는 반면 두 번째 파일에서는 출력이 줄에 있으므로 동일한 내용이 아닌 json의 줄이 표시되지만 변경된 전체 객체는 diff의 미스터리로 남아 있지 않습니다. . 나는이 행동에 대해 매우 혼란 스럽다. 나를 설명하거나이 문제를 해결할 수 있습니까? 두 번째 파일에서Datadiff, diff의 결과가 일치하지 않음

+{u'origin': u'VIRTUAL', u'score': 1, u'type': u'PLACES', u'name': u'comune di Roma'}, 
+{u'origin': u'VIRTUAL', u'score': 1, u'type': u'PLACES', u'name': u'provincia di Roma'}, 

DIFF :

-u'position': 1,: 
    u'score': 1,: 
    u'score': 1,: 
    u'score': 1,: 

나는 모든을 선택하기 위해 노력하고있어

out = datadiff.diff(t[0].get("key"),t[1].get("key")) 
    if options.get("key2") != None: 
     out = scorecheck(out,options.get("key2")) 
    if checkdiff(str(out)): 
     f.write("Feelings:<br/>") 
     printdiff(f, str(out)) 

첫 번째 파일의은 diff의 출력 : 아래 코드는 json에서 점수 1을 말하는 줄뿐만 아니라 점수 1을 포함하는 "object". 첫 번째 출력은 괜찮습니다. 두 번째 출력은 쓸모가 없습니다.

+1

첫 번째 및 두 번째 파일의 예를 보여줄 수 있습니까? – aIKid

+0

Datadiff는 파일이 아닌 파이썬 구조에서만 작동하는 것처럼 보입니다. 그래서 나는 당신의 파일 형식이 그것과 관련이 있는지 이해하지 못합니다. 대신 사전을보아야합니다. – Evert

+0

파일이 서로 매우 다르므로 json에 저장된 데이터를 순서대로 포함하기 위해 두 개의 사전을 사용해야했습니다. 두 파일의 diff를 만들고 읽는 것이 더 쉽습니다. – softwareplay

답변

0

Datadiff는 diffs의 신성한 책이 아닙니다. 특히 Python 구조체 diff의 경우입니다. 필요한 기능을 개인화하고 원하는대로 작성할 수있는 기능을 구현할 수 있으며 그렇게하는 것이 매우 쉽습니다. 이 사이트에는 많은 예제가 있습니다. 많은 사람들은 datadiff 라이브러리를 사용하는 대신 diff를 새로 작성하는 것을 선호합니다. 다음은 dict의 두 목록의 diff를 작성하는 코드 예제입니다. 그것은 dict의 목록의 목록을 반환하며, 첫 번째 파일은 첫 번째 파일의 diff를 포함하고 두 번째 파일은 두 번째 파일의 diff를 비교합니다. html 파일에서 다른 색상의 두 목록을 인쇄하는 것이 유용합니다.

def listdiff(listofdict1,listofdict2): 
listofdict3 = [] 
listofdict4 = [] 
for i in listofdict1: 
    if i not in listofdict2: 
     listofdict3.append(i) 
for j in listofdict2: 
    if j not in listofdict1: 
     listofdict4.append(j) 
return [listofdict3,listofdict4] 
관련 문제