亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python API 請求 - For 循環導致索引錯誤

Python API 請求 - For 循環導致索引錯誤

四季花海 2023-12-29 14:28:46
對 Python 來說相當陌生......在我的代碼中與 for 循環作斗爭,特別是 Key: 'topic_title' 的分配。我不斷收到“列表索引超出范圍”錯誤?!皊olicitation_topics”處的 JSON 響應是嵌套的,所以我相信我需要傳遞索引,這在嘗試直接從 python 終端訪問時有效,但是在函數中我不斷收到錯誤。任何幫助將不勝感激。import requests, jsondef get_solicitations():    # api-endpoint    URL = "https://www.sbir.gov/api/solicitations.json"    # defining a params dict for the parameters to be sent to the API     PARAMS = {"keyword": 'sbir'}     # sending get requfiest and saving the response as response object     r = requests.get(url = URL, params = PARAMS)     # extracting data in json format     api_data = r.json()     # storing selected json data into a dict    solicitations = []    for data in api_data:        temp = {            'solicitation_title': data['solicitation_title'],            'program': data['program'],            'agency': data['agency'],            'branch': data['branch'],            'close_date': data['close_date'],            'solicitation_link': data['sbir_solicitation_link'],            'topic_title': data['solicitation_topics'][0]['topic_title'],        }        solicitations.append(temp)     return (solicitations)
查看完整描述

1 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

復制您的代碼,看起來 solicitation_topics 可能是一個空列表。我將此行添加到您的函數中:

print(f"title = {data['solicitation_title']}, topics: {data['solicitation_topics']}")

我發現這個(幾個之一)是空的:

title = PHS 2020 NIH、CDC 和 FDA 小型企業創新研究補助金申請綜合征集(母版 SBIR [R43/R44] 不允許進行臨床試驗),主題:[]

您需要弄清楚如何防范這種情況。如果你想跳過空的,你可以continue在循環的頂部放置一個:

if not data['solicitation_topics']:
    continue

或者,如果您仍然想保留沒有主題的招標,您應該在上面生成您想要的標題,然后在您的臨時文件中使用它:

if data['solicitation_topics']:
    topic_title = data['solicitation_topics'][0]['topic_title']
    else:
    topic_title = 'Not Supplied'


查看完整回答
反對 回復 2023-12-29
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號