2015-12-20 1 views
0

Я получаю вышеуказанную ошибку для двух последних строк, и я не уверен, что означает эта ошибка. Я пытаюсь получить «симпатичную» печать на выходе. Может ли кто-нибудь прокомментировать эту ошибку? Что я пропустил?Ошибка Python: объект 'int' не имеет атрибутов в дампах

import json 
import urllib 

serviceurl = 'http://python-data.dr-chuck.net/comments_42.json' 

while True: 
    url = serviceurl + urllib.urlencode({'sensor':'false', 'address': 'address'}) 
    print "Retrieving", url 
    uh = urllib.urlopen(url) 
    data = uh.read() 
    print "Retrieved", len(data), "characters" 
    try: js = json.loads(str(data)) 
    except:  js = None 
    js = js["comments"][0]["count"] 
    print js.dumps(js, indent = 4) 
    print sum(js.get('count', 0) for js in js['comments']) 

JSON данных выглядит следующим образом:

{ 
    comments: [ 
    { 
     name: "Matthias" 
     count: 97 
    }, 
    { 
     name: "Geomer" 
     count: 97 
    } 
    ... 
    ] 
} 

ответ

0

Вы присваивается целое число в переменную js на линии перед:

js = js["comments"][0]["count"] 

Вы не можете назвать js.dumps(), потому что int объекты не имеют такого метода. Возможно, вы хотели вместо этого позвонить json.dumps()?

print json.dumps(js, indent = 4) 

Вы будете иметь больше проблем, однако, как вы заменили js с int вы также можете не петля над ним здесь:

print sum(js.get('count', 0) for js in js['comments']) 

Может быть, вы должны использовать другую переменную для рассчитывать; count будет работать, и comment в петле:

count = js["comments"][0]["count"] 
print json.dumps(js, indent = 4) 
print sum(comment.get('count', 0) for comment in js['comments']) 
+0

спасибо. Теперь это имеет гораздо лучший смысл. Я вижу, как все это подходит. – cybernerd

Смежные вопросы