簡體   English   中英

異常值:列表索引必須是整數,而不是str

[英]Exception Value: list indices must be integers, not str

我正在嘗試處理從API獲得的JSON文件。 但是,當我嘗試使用json.loads()對其進行轉換后,嘗試訪問它的信息時。 我收到以下錯誤:

Exception Value: list indices must be integers, not str

python代碼:

response = requests.get(url, params=params)
print(response.text)    
results= json.loads(response.text)
result = results['results']['lists'] ['id']

JSON輸出:

{"meta":{"pagination":{}},"results":[{"id":"3358","status":"ACTIVE","fax":"","addresses":[],"notes":[],"confirmed":false,"lists":[{"id":"60","status":"ACTIVE"}],"source":"API","email_addresses":[{"id":"d4ae529ce120","status":"ACTIVE","confirm_status":"NO_CONFIRMATION_REQUIRED","opt_in_source":"ACTION_BY_OWNER","opt_in_date":"2015-06-17T16:07:09.000Z","email_address":"test35@tes.com"}],"prefix_name":"","first_name":"test44","middle_name":"","last_name":"","job_title":"","company_name":"test","home_phone":"","work_phone":"","cell_phone":"","custom_fields":[],"created_date":"2015-06-17T16:07:09.000Z","modified_date":"2015-06-17T16:07:09.000Z","source_details":"Site"}]}

如何使用索引字符串訪問元素,或者您建議使用哪個庫來解決該問題?

results鍵提供對象列表:

>>> from pprint import pprint
>>> import json
>>> pprint(json.loads('''{"meta":{"pagination":{}},"results":[{"id":"3358","status":"ACTIVE","fax":"","addresses":[],"notes":[],"confirmed":false,"lists":[{"id":"60","status":"ACTIVE"}],"source":"API","email_addresses":[{"id":"d4ae529ce120","status":"ACTIVE","confirm_status":"NO_CONFIRMATION_REQUIRED","opt_in_source":"ACTION_BY_OWNER","opt_in_date":"2015-06-17T16:07:09.000Z","email_address":"test35@tes.com"}],"prefix_name":"","first_name":"test44","middle_name":"","last_name":"","job_title":"","company_name":"test","home_phone":"","work_phone":"","cell_phone":"","custom_fields":[],"created_date":"2015-06-17T16:07:09.000Z","modified_date":"2015-06-17T16:07:09.000Z","source_details":"Site"}]}''')
... )
{u'meta': {u'pagination': {}},
 u'results': [{u'addresses': [],
               u'cell_phone': u'',
               u'company_name': u'test',
               u'confirmed': False,
               u'created_date': u'2015-06-17T16:07:09.000Z',
               u'custom_fields': [],
               u'email_addresses': [{u'confirm_status': u'NO_CONFIRMATION_REQUIRED',
                                     u'email_address': u'test35@tes.com',
                                     u'id': u'd4ae529ce120',
                                     u'opt_in_date': u'2015-06-17T16:07:09.000Z',
                                     u'opt_in_source': u'ACTION_BY_OWNER',
                                     u'status': u'ACTIVE'}],
               u'fax': u'',
               u'first_name': u'test44',
               u'home_phone': u'',
               u'id': u'3358',
               u'job_title': u'',
               u'last_name': u'',
               u'lists': [{u'id': u'60', u'status': u'ACTIVE'}],
               u'middle_name': u'',
               u'modified_date': u'2015-06-17T16:07:09.000Z',
               u'notes': [],
               u'prefix_name': u'',
               u'source': u'API',
               u'source_details': u'Site',
               u'status': u'ACTIVE',
               u'work_phone': u''}]}

[...]前后的方括號results值。

您需要使用循環來遍歷每個:

for result in results['results']:
    print result['id']

或使用索引來尋址特定條目:

print results['result'][0]['id']

沒有'lists'鍵。

請注意, requests庫可以本地處理JSON數據; 無需在這里使用json庫:

response = requests.get(url, params=params)
results = response.json()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM