2016-03-28 5 views
-2

ich jeden Wert von 'Lemma' in diesem json erhalten möchten:Python - get spezifischen Wert auf json

{'sentences': 
    [{'indexeddependencies': [], 'words': 
    [ 
     ['Cinnamomum', {'CharacterOffsetBegin': '0', 'CharacterOffsetEnd': '10', 'Lemma': 'Cinnamomum', 'PartOfSpeech': 'NNP', 'NamedEntityTag': 'O'}], 
     ['.', {'CharacterOffsetBegin': '14', 'CharacterOffsetEnd': '15', 'Lemma': '.', 'PartOfSpeech': '.', 'NamedEntityTag': 'O'}] 
    ], 'parsetree': [], 'text': 'Cinnamomum.', 'dependencies': [] 
    }, 
    {'indexeddependencies': [], 'words': 
     [ 
     ['specific', {'CharacterOffsetBegin': '16', 'CharacterOffsetEnd': '24', 'Lemma': 'specific', 'PartOfSpeech': 'JJ', 'NamedEntityTag': 'O'}], 
     ['immunoglobulin', {'CharacterOffsetBegin': '25', 'CharacterOffsetEnd': '39', 'Lemma': 'immunoglobulin', 'PartOfSpeech': 'NN', 'NamedEntityTag': 'O'}], 
     ['measurement', {'CharacterOffsetBegin': '51', 'CharacterOffsetEnd': '62', 'Lemma': 'measurement', 'PartOfSpeech': 'NN', 'NamedEntityTag': 'O'}] 
     ], 'parsetree': [], 'text': 'specific immunoglobulin measurement', 'dependencies': [] 
    }] 
} 

Wie kann ich jeden Wert mit Python bekommen? Es gibt fünf Lemma-Schlüssel, aber ich kann nicht alle bekommen.

Ich habe dies versucht, aber es funktioniert nicht:

for i in range(len(words)): #in this case the range of i would be 5 
     lemma = result["sentences"][0]["words"][i][1]["Lemma"] 

Antwort

0
  1. einfache Anführungszeichen in doppelte Anführungszeichen ändern durch sed -i 's/\'/\"/g' sample.json

  2. convert Objekt JSON und es durch das Modul analysieren json import json with open('sample.json', encoding='utf-8') as data_file: data = json.loads(data_file.read()) for sentence in data['sentences']: for word in sentence['words']: print(word[1]['Lemma'])

Ergebnis: Cinnamomum . specific immunoglobulin measurement

1

Ich bin mir nicht sicher, warum Sie diese Datenstruktur hast - vorausgesetzt, Sie nicht ändern können/umformen es besser, Ihre Anfragen zu entsprechen und Anwendungsfälle und dass Lemma Schlüssel wäre immer vorhanden sein:

>>> [word[1]['Lemma'] 
    for sentence in data['sentences'] 
    for word in sentence['words']] 
['Cinnamomum', '.', 'specific', 'immunoglobulin', 'measurement'] 
0

diese einfache Code alles durchquert und findet alle Werte Lemma (btw Ihre json "anstelle von" als String Anführungszeichen haben sollte, ich denke.

import json 

with open('lemma.json') as f: 
    data = json.load(f) 


def traverse(node): 
    for key in node: 
     if isinstance(node, list): 
      traverse(key) 
     elif isinstance(node, dict): 
      if key == 'Lemma': 
       print key, node[key] 
       continue 
      traverse(node[key]) 

traverse(data) 
0

können Sie die JSON encoder and decoder library

verwenden Wenn Sie diese Bibliothek verwenden Sie schreiben:

import json json.loads(result)

Wie auch immer, ich versuche, Ihre json in einem Prüfer setzen und ich erhalten einen Fehler

+0

i Apostroph doppelte Anführungszeichen und verwenden Sie dann json.loads() geändert, und es funktioniert – haifzhan