2017-06-05 7 views
0

Ich versuche, ein Attribut aus einer JSON-Datei zu lesen, mit dieser: d['text']['entities']['mention'][0]['screen_name']Lese Wert von Json-Datei

Json Datei

{ 
    "text" : { 
     "content" : "@narendramodi Did u even know the fare of metro has been increased by 65%", 

     "entities" : { 
      "user_mentions" : [ ], 
      "mention" : [ 
       { 
        "indices" : [ 
         0, 
         13 
        ], 
        "id_str" : "18839785", 
        "screen_name" : "narendramodi", 
        "name" : "Narendra Modi", 
        "id" : 18839785 
       } 
      ], 
      "hashtags" : [ ], 
     }, 

    } 
} 

ich viele json Dateien in Neo4j Datenbank mit py2neo zu laden versuchen Bibliothek.

Während d['text']['entities']['mention'][0]['screen_name'] accesing in einer der JSON-Datei, in der "mention" : [ ], Erwähnung Feld leer ist es sagt

Indexerror: Listenindex außerhalb des zulässigen Bereichs

Fehler ist ziemlich offensichtlich, aber wie soll ich damit umgehen ?

+2

Es funktioniert perfekt in meinem Computer (Python 3.6), ist der Wert "'Narendramodi" ohne jedes Problem. –

+0

Es funktioniert auch gut für mich. Ist das alles, was Sie in der JSON-Datei haben? Ich benutze Python 2.7 .. –

+0

Es scheint eine Diskrepanz zwischen der JSON Sie gebucht und der JSON Ihr Programm liest. –

Antwort

0

Sie nur try/except Block nutzen könnten. Wie

try: 
    data = d['text']['entities']['mention'][0]['screen_name'] 
    ... 
except IndexError: 
    data = None # or handle this case in other way 
+0

Danke jetzt Es funktioniert gut. –

+0

@Aman Kumar Sie sind willkommen) Wenn meine Antwort hilfreich ist, können Sie es als richtige Antwort markieren. – kvorobiev

-1

versuchen, diese -

mentions = d.get('text',{}).get('entities',{}).get('mention' ,[]) 
    if len(mentions)>0: 
     print(mentions[0].get('screen_name',None)) 
    else: 
     print(None) 
+2

String würde nicht produzieren IndexError: Liste Index außerhalb des Bereichs. Sie konvertieren es auch nicht in ein "Json-Objekt", sondern in * Python-Objekte *. JSON ist ein Textserialisierungsformat. –

+0

@ juanpa.arrivillaga, Ich habe diesen Code getestet und es funktioniert, sieht aus wie json ist falsch und einige zusätzliche ',' in der Json. – tom

+0

Ja, ich weiß, dass der Code funktioniert, aber diese Antwort adressiert nicht das Problem des OP, das eine Liste ist, die einen 'IndexError' wirft. In der Tat, der Code in der OP-Frage * funktioniert *, so offensichtlich ist dies nicht das Problem. –