2016-08-08 4 views
0

Ich versuche herauszufinden, wie Sie einen Schlüssel namens ['Text'] finden und dann die übergeordneten Schlüssel aus dem Nest erhalten. Es ist der dritte Schlüssel, der anders ist, alle anderen Tags sind gleich.Wie Eltern in Pfad zurückgegeben werden, und Schlüssel in JSON suchen

html_data = data['data']['document_data']['dataItem-ihmty5rw']['text'] 

Ich bin mit dieser Funktion die Schlüssel erhalten:

def printKeysValues(d): 
     for k, v in d.items(): 
     if isinstance(v, dict): 
      printKeysValues(v) 
     else: 
      print("{0} : {1}".format(k, v)) 

Und diese Funktion den Einzug zu finden:

def pretty(d, indent=0): 
    for key, value in d.items(): 
     print('\t' * indent + str(key)) 
     if isinstance(value, dict): 
      pretty(value, indent+1) 
     else: 
      print('\t' * (indent+1) + str(value)) 
+0

Könnten Sie klarstellen, was Ihre endgültige Ausgabe sein soll? – Karin

+0

Die endgültige Ausgabe ist der Wert der Taste ['text'] für ähnliche Dateien. Das Hauptproblem ist, dass sie tief verschachtelt und schwer zu finden sind. – Matts

+0

Wollen Sie sagen, dass Sie nur einen Ausdruck aller Werte unter dem Schlüssel "text" in einem verschachtelten Wörterbuch möchten? Und wenn ja, ist der "Text" -Schlüssel immer der 4. verschachtelte Schlüssel? – Karin

Antwort

0

Ich bin noch nicht ganz sicher, ob dies was Sie wollten, aber wenn Sie nur den Text pro Artikel Wörterbuch möchten, denke ich, das sollte funktionieren:

# a dictionary of item string to dictionary containing a "text" key 
item_map = data['data']['document_data'] 

for item_string, item_map in item_map.iteritems(): 
    print item_string # the item string (e.g. 'dataItem-ihmty5rw') 
    print item_map['text'] # this is the text associated with the item string 
+0

Danke Karin, es funktioniert. Ich fügte eine Zeile vor den Ausdruckanweisungen 'if item_map.get ('text') hinzu:' um die anderen Tags auf der dritten Ebene herauszufiltern. – Matts

Verwandte Themen