2017-10-23 5 views
0

pythonの新機能で、状態が "STARTED"でない値のIDと状態のみを出力するためにjsonファイルを解析するスクリプトを作成しようとしています。そして、すべてがSTARTEDと言って何も印刷しない場合は、何も印刷しないでください。Pythonでjsonを解析する - 文字列のインデックスは整数でなければなりません

しかし、「文字列インデックスは整数でなければなりません」というエラーが表示されます。

import json 
jsonFile = open('topics.json', 'r') 
data = json.load(jsonFile) 

for check in data['rows']: 
    if check['state'] is not "STARTED": 
     print check['id']['state'] 

、ここであなたがprint check['id'],check['state']をしたい私のtopics.json

{ 
    "page": 0, 
    "page_size": 100, 
    "total_pages": 10, 
    "total_rows": 929, 
    "headers": [ 
    "*" 
    ], 
    "rows": [ 
    { 
     "id": "168", 
     "state": "STARTED" 
    }, 
    { 
     "id": "169", 
     "state": "FAILED" 
    }, 
    { 
     "id": "170", 
     "state": "STARTED" 
    } 
    ] 
} 

答えて

5

の一例です。

check['id']は文字列を返します。したがって、check['id']['state']は整数の代わりに文字列でインデックスを作成しようとします。その結果、エラーが発生します。

また、不等式の比較は、!=ではなく、is notを使用する必要があります。 isは、オブジェクトIDを比較し、2つのオブジェクトが同じ値を持ち、同じオブジェクトではないので、使用することができます。それ

if check['state'] != "STARTED": 
+0

だったこと!ありがとうございました! – Blooze

関連する問題