2016-04-08 15 views
-2

Dies kann eine dumme Frage sein, aber ich kann es nicht für das Leben von mir herausfinden Bitte entschuldigen Sie meine verwirrenden Variablennamen. Ich wäre begeistert, wenn jemand mir sagen könnte, warum der folgende Fehler passiert und/oder irgendwelche anderen Fehler meinen Code.Fehler beim Laden von Twitter Suchergebnissen

JSON: error erwartet Eigenschaftsname Zeile 1 Spalte 2 (char 1)

import json 
import twitter 
a = twitter.get_account("@Suppert2") 
q = "cxdffcfctftcvft" 
ac = twitter.search(a,q, count=1, parameters=None) 
abg = str(ac) 
print (abg) 
ah = json.loads(abg) # here is where the error is occurring 
print ah["completed_in"] 

Und wenn Sie abg Druck kommt es aus wie:

{u'search_metadata': {u'count': 1, u'completed_in': 0.048, u'max_id_str': u'718234026394443782', u'since_id_str': u'0', u'refresh_url': u'?since_id=718234026394443782&q=x597567654dfv&include_entities=1', u'since_id': 0, u'query': u'x597567654dfv', u'max_id': 718234026394443782L}, u'statuses': []} 

Antwort

0

Das ist kein gültiger JSON, können Sie http://jsonlint.com verwenden, um es zu überprüfen.

+0

Ja, das gilt: '' '{ \t "search_metadata": { \t \t "count": 1, \t \t "completed_in": 0.048 \t} }' '' – Zepplock

+0

Aber die @alecxe Antwort ist richtig – Zepplock

+0

Warum wurden meine Kommentare entfernt ?? –

3

Es besteht keine Notwendigkeit JSON zu laden hier ist, twitter.search() kehrt man ein Python-Wörterbuch in erster Linie, es einfach zu verwenden:

ac = twitter.search(a,q, count=1, parameters=None) 
print(ac["statuses"]) 
print(ac["search_metadata"]["completed_in"]) 
+0

Es gibt nicht nur "keine Notwendigkeit", JSON hier zu laden; Sie können JSON hier nicht laden. Weil es nicht JSON ist. –

+0

: 0 Oh mein Gott, ich bin ein Idiot, ich dachte über so viel Dank dir so viel Mann –

0

Es Art wie JSON aussieht, aber es ist nicht JSON.

Die Präfixe u, das Suffix L und die Verwendung von einfachen Anführungszeichen machen JSON ungültig. Daher ist die Behandlung als JSON fehlgeschlagen (und Sie können sehen, dass es sich nicht um JSON handelt, indem Sie versuchen, es bei http://jsonlint.com zu validieren, immer ein guter erster Debugging-Schritt).

Diese Saite ist eigentlich die String-Darstellung eines Wörterbuchs Python, die Sie von str(ac) bekam, weil die Twitter-API hat Ihnen einen Python-Wörterbuch (in ac).

So verwenden Sie ac direkt, z.

print(ac["search_metadata"]["completed_in"]) 
Verwandte Themen