Получить соответствующее значение из ключа JSON в Python - PullRequest
0 голосов
/ 28 марта 2012

В настоящее время у меня есть следующее, которое анализирует API json ..

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

Это возвращает следующее ..

[{'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'}]

Как мне получить только фактический URL всписок URL?Если бы вы могли объяснить шаги в своем ответе, чтобы я мог учиться на нем, я был бы признателен.Спасибо

Ответы [ 2 ]

1 голос
/ 28 марта 2012
>>> 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']

Это должно дать вам URL, которые вам нужны, но выглядит так:

for item in value[art]:
    info = {}
    info['url'] = urllib2.quote(item['url'], ':/') # Original image url
    if info:
        image_list.append(info)

Можно упростить до этого:

for item in value[art]:
    url = urllib2.quote(item(['url'], ':/')
    if url:
      image_list.append(url)  
1 голос
/ 28 марта 2012

Как насчет этого?

    # your old code avoce
    for item in value[art]:
        url = urllib2.quote(item['url'], ':/') # Original image url
        if url:
            image_list.append(url)
...