2017-10-18 3 views
-1
"results": [ 
     { 
     "result_index": 0, 
     "results": [ 
      { 
       "final": true, 
       "alternatives": [ 
        { 
        "transcript": "THE TEXT ", 
        "confidence": 0.2958 
        } 
       ] 
      } 
     ] 
     } 
    ], 
    "status": "completed" 

Je veux la valeur de la transcription dans ce JSON, essentiellement je veux: LE TEXTEQuelle est la fonction d'analyse de ce JSON?

Parse j'ai essayé et n'a pas fonctionné:

def parse(obj): 
    text=[] 
    if 'results' in obj: 
     results = obj['results'] 
     for result in results: 
      if 'results' in results: 
       results = results['results'] 
       if 'alternatives' in result: 
        alternatives = result['alternatives'] 
        assert len(alternatives) == 1 
        alternative = alternatives[0] 
        text.append(alternative['transcript']) 
    return ' '.join(text).lstrip().rstrip() 

Quelle serait la fonction d'analyse syntaxique correcte à utiliser be

+1

Que signifie * "ne fonctionne pas" *? –

Répondre

1

Pourquoi ne pas utiliser le package json? Ce serait rendre votre vie plus facile, utilisez:

import json 

Puis, à partir de celui-ci:

data2 = json.loads('''{"results": [ 
     { 
     "result_index": 0, 
     "results": [ 
      { 
       "final": true, 
       "alternatives": [ 
        { 
        "transcript": "THE TEXT ", 
        "confidence": 0.2958 
        } 
       ] 
      } 
     ] 
     } 
    ], 
    "status": "completed"}''') 

print(data2['results'][0]['results'][0]['alternatives'][0]['transcript']) 

Tout d'abord, votre JSON est même pas valide, vous devez le placer entre accolades. Ensuite, comme JSON.loads attend une chaîne, vous devez l'insérer dans '''. Une autre manière serait que vous déclariez votre JSON en tant que var, puis appelez new_var = JSON.dumps(your_json_var), puis JSON.loads(new_var), puis appelez la même fonction d'impression comme ci-dessus.

+0

Cela n'a pas fonctionné. TypeError: les index de liste doivent être des entiers, pas str – Tim

+0

J'ai édité ma réponse –

+0

oh okey mais cela me donne seulement 1 élément, et si j'avais 100. (c'est fondamentalement pourquoi j'utilise ifs). – Tim