我使用最后一个fm api从指定国家/地区获取顶级艺术家,我想为每位顶级艺术家保存名称,网址和传记。名称和网址工作正常,但传记无效。
我这样做是为了得到顶级艺术家的名字和网址:
import requests
api_key = ""
ID = 0
artists = {}
for i in range(1, 3):
artists_response = requests.get('http://ws.audioscrobbler.com/2.0/?method=geo.gettopartists&country=spain&format=json&page=' + str(i) + '&api_key=' + api_key)
artists_data = artists_response.json()
#print(artists_data)
for artist in artists_data["topartists"]["artist"]:
name = artist["name"]
url = artist["url"]
image = artist["image"]
artists[ID] = {}
artists[ID]['ID'] = ID
artists[ID]['name'] = name
artists[ID]['url'] = url
artists[ID]['image'] = image
ID += 1
#print(artists)
此时工作正常。但现在我想得到每个topartist的传记摘要,但它出现错误" TypeError:字符串索引必须是整数",on" print(artist["summary"])
":
for i,v in artists.items():
chosen = artists[i]['name'].replace(" ", "+")
artist_response = requests.get('http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&format=json&artist='+chosen+'&api_key='+api_key)
artist_data = artist_response.json()
#print(artist_data)
for artist in artist_data['artist']['bio']:
print(artist["summary"])
bio = artist["summary"]
artists[ID]['bio'] = bio
# print(artist_response)
答案 0 :(得分:0)
从您的示例数据中可以清楚地看出artist_data["artist"]["bio"]
是一个字典,因此循环将该字典的键(它们是字符串)分配给artist
。
由于你没有提供artist_data["top_artists"]
的例子,我不能说为什么没有产生同样的错误。