从lastfm获取传记摘要:TypeError:字符串索引必须是整数

时间:2017-11-17 21:07:19

标签: python

我使用最后一个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)

1 个答案:

答案 0 :(得分:0)

从您的示例数据中可以清楚地看出artist_data["artist"]["bio"]是一个字典,因此循环将该字典的(它们是字符串)分配给artist

由于你没有提供artist_data["top_artists"]的例子,我不能说为什么没有产生同样的错误。