我刚刚完成了一些在线教程,我正在试验Discogs Api
我的代码如下:
import discogs_client as discogs
discogs.user_agent = '--' #i removed it
artist_input = raw_input("Enter artist\'s name : ")
artist = discogs.Artist(artist_input)
if artist._response.status_code in (400, 401, 402, 403, 404):
print "Sorry, this artist %s does not exist in Discogs database" % (artist_input)
elif artist._response.status_code in (500, 501, 502, 503) :
print "Server is a bit sleepy, give it some time, won\'t you ._."
else:
print "Artist : " + artist.name
print "Description : " + str(artist.data["profile"])
print "Members :",
members = artist.data["members"]
for index, name in enumerate(members):
if index == (len(members) - 1):
print name + "."
else:
print name + ",",
我想使用的列表格式如下:
[<MasterRelease "264288">, <MasterRelease "10978">, <Release "4665127">...
我想隔离那些使用MasterRelease的人,以便获取他们的ID
我试过类似的方法
for i in artist.releases:
if i[1:7] in "Master":
print i
或者
for i in thereleases:
if i[1:7] == "Master":
print i
我确实错过了一些东西,但这让我很困惑,因为我能做到这一点
newlist = ["<abc> 43242"]
print newlist[0][1]
在这种情况下
thereleases = artist.releases
print thereleases[0][1]
我明白了
TypeError: 'MasterRelease' object does not support indexing
请随意指出有关代码的任何内容,因为我对python的知识还很有限。你知道吗
您看到的是对象的Python表示,而不是字符串。列表中的每个元素都是
MasterRelease
类的实例。你知道吗这些对象具有
id
属性,直接引用该属性即可:其他属性是
.versions
表示其他发行版,.title
表示发行版标题,等等问题是您正在处理对象并假设它们是字符串。
artist.releases
是一个包含许多对象的列表。你知道吗这是因为newlist是一个包含单个元素(字符串)的列表。所以
newlist[0]
给你一个字符串'<abc> 43242'
。应用newlist[0][1]
得到该字符串的第二个元素,即'a'
。你知道吗但这只适用于支持索引的对象。而您正在处理的对象没有。您在列表中看到的是对象的字符串。你知道吗
我真的帮不了你这么多,因为我不知道
MasterRelease
和Release
实例-但是它们应该有一些属性可以让你得到所需的值。你知道吗如果您只想筛选
MasterRelease
,那么下面的代码可能会执行以下操作:[master for master in artist.releases if 'MasterRelease' in str(type(master))]
假设
MasterRelease
不在当前范围内。或者你可以:[master for master in artist.releases if isinstance(master, MasterRelease)]
相关问题 更多 >
编程相关推荐