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

我想成績單在此JSON的價值,基本上我想:文本這個Json的解析函數是什麼?

我想和沒有工作的解析:

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() 

什麼會正確的解析函數的使用是

+1

*「沒有工作」*是什麼意思? –

回答

1

爲什麼不使用json包?它會讓你的生活更輕鬆,使用方法:

import json 

然後,從其上:

所有的
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']) 

首先,你的JSON甚至不是有效的,你必須把它們放在大括號。接下來,由於JSON.loads需要一個字符串,因此您必須將其包裝在'''中。 另一種方法是將您的JSON聲明爲var,然後調用new_var = JSON.dumps(your_json_var),然後JSON.loads(new_var),然後調用與上面相同的打印功能。

+0

它沒有工作。 TypeError:列表索引必須是整數,而不是str – Tim

+0

我已經編輯了我的答案 –

+0

oh okey,但這隻給了我1個元素,如果我有100個元素(這就是爲什麼我使用ifs)。 – Tim