[英]How can I solve IndexError: list index out of range in a list of dict?
對於以下代碼,我得到
回溯(最近一次調用):文件“main.py”,第 24 行,在artist_uri = json_data['artists']['items'][0]['id'] 索引錯誤:列表索引超出范圍。
誰能告訴我如何解決這個問題?
for item in (fd):
artist = item['Name']
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer xxxxx',
}
params = (
('q', artist),
('type', 'artist'),
)
response = requests.get('https://api.spotify.com/v1/search', headers=headers, params=params)
json_data = json.loads(response.text) # convert json response to text/dict
artist_uri = json_data['artists']['items'][0]['id']
print(artist_uri)
這是因為無法從 Spotify API 中檢索到藝術家:“ANAVITÃÂRIA”。 以下是您的腳本在嘗試時得到的響應:
{
"artists" : {
"href" : "https://api.spotify.com/v1/search?query=ANAVIT%C3%83%C2%83%C3%82%C2%93RIA&type=artist&offset=0&limit=20",
"items" : [ ],
"limit" : 20,
"next" : null,
"offset" : 0,
"previous" : null,
"total" : 0
}
有時可能是由於名稱中的字符。 為了避免這個錯誤,限速問題並繼續循環您可以檢查當前API響應中是否有數據以及API響應的狀態碼檢查更新的代碼:(請在嘗試時更新承載令牌)
import pandas as pd
import requests
import json
import time
fd = pd.read_csv('fd.csv',sep=';',encoding='latin1') # Reading data from csv
fd = fd.T.to_dict().values() # Converting dataframe into list of dictionaries
for item in (fd):
artist = item['Name']
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer xxxxxx',
}
params = (
('q', artist),
('type', 'artist'),
)
response = requests.get('https://api.spotify.com/v1/search', headers=headers, params=params)
if response.status_code != 429:
json_data = json.loads(response.text) # convert json response to text/dict
if (len(json_data['artists']['items']) > 0):
artist_uri = json_data['artists']['items'][0]['id']
print(artist_uri)
else:
time.sleep(30)
response = requests.get('https://api.spotify.com/v1/search', headers=headers, params=params)
json_data = json.loads(response.text) # convert json response to text/dict
if (len(json_data['artists']['items']) > 0):
artist_uri = json_data['artists']['items'][0]['id']
print(artist_uri)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.