问题
currently I have the following which parses a json api..
import simplejson
import urllib2
f = urllib2.urlopen('http://fanart.tv/webservice/series/f5b8e776c35e7536eac132802b03281f/80349/json/tvthumb/')
data = simplejson.load(f)
imagetypes = ['clearlogo', 'clearart', 'tvthumb', 'seasonthumb', 'characterart']
image_list = []
# split "name" and "data"
for title, value in data.iteritems():
# run through specified types
for art in imagetypes:
# if type has been found
if value.has_key(art):
# Run through all the items
for item in value[art]:
info = {}
info['url'] = urllib2.quote(item['url'], ':/') # Original image url
if info:
image_list.append(info)
print image_list
This returns the following..
[{'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5287/C_80349%20%284%29.jpg'},
{'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5286/C_80349%20%285%29.jpg'},
{'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5288/C_80349%20%283%29.jpg'},
{'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5289/C_80349%20%282%29.jpg'},
{'url': u'http://fanart.tv/fanart/tv/80349/tvthumb/5290/C_80349.jpg'}, {'url':
'http://fanart.tv/fanart/tv/80349/tvthumb/5291/C_80349%20%280%29.jpg'}]
How do I go about getting just the actual url into a list of urls? If you could explain the steps in your answer so I can learn from it I'd appreciate it. Thanks
回答1:
How about this.
# your old code avoce
for item in value[art]:
url = urllib2.quote(item['url'], ':/') # Original image url
if url:
image_list.append(url)
回答2:
>>> urllist = [{'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5287/C_80349%20%284%29.jpg'},
... {'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5286/C_80349%20%285%29.jpg'},
... {'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5288/C_80349%20%283%29.jpg'},
... {'url': 'http://fanart.tv/fanart/tv/80349/tvthumb/5289/C_80349%20%282%29.jpg'},
... {'url': u'http://fanart.tv/fanart/tv/80349/tvthumb/5290/C_80349.jpg'}, {'url':
... 'http://fanart.tv/fanart/tv/80349/tvthumb/5291/C_80349%20%280%29.jpg'}]
>>> [item['url'] for item in urllist]
['http://fanart.tv/fanart/tv/80349/tvthumb/5287/C_80349%20%284%29.jpg', 'http://fanart.tv/fanart/tv/80349/tvthumb/5286/C_80349%20%285%29.jpg', 'http://fanart.tv/fanart/tv/80349/tvth
umb/5288/C_80349%20%283%29.jpg', 'http://fanart.tv/fanart/tv/80349/tvthumb/5289/C_80349%20%282%29.jpg', u'http://fanart.tv/fanart/tv/80349/tvthumb/5290/C_80349.jpg', 'http://fanart.
tv/fanart/tv/80349/tvthumb/5291/C_80349%20%280%29.jpg']
That should give you the urls that you need but it seems like this:
for item in value[art]:
info = {}
info['url'] = urllib2.quote(item['url'], ':/') # Original image url
if info:
image_list.append(info)
Could be simplified to this:
for item in value[art]:
url = urllib2.quote(item(['url'], ':/')
if url:
image_list.append(url)
来源:https://stackoverflow.com/questions/9914545/get-corresponding-value-from-json-key-in-python