我有电影上的数据,其中一部电影《伴娘》看起来像这样。
{'Similar': {'Info': [{'Name': 'Bridesmaids', 'Type': 'movie'}], 'Results': [{'Name': 'Baby Mama', 'Type': 'movie'}, {'Name': 'The Five-Year Engagement', 'Type': 'movie'}, {'Name': 'Bachelorette', 'Type': 'movie'}, {'Name': 'The Heat', 'Type': 'movie'}, {'Name': 'Date Night', 'Type': 'movie'}]}}
我想创建一个仅包含电影名称的列表[](因此,我想进入'Similar'
,然后在字典中找到'Info'
,找到{{ 1}}键,提取此值'Name'
)并遍历所有电影。
首先,我创建了函数get_movies_from_tastedive(name),以便将数据保存在电影中(第1部分)。
然后,我尝试定义第二个函数extract_movie_titles,希望该函数将返回电影标题列表。我在这里使用列表理解。 当我尝试通过打印(第22行和第23行)来调用它时,它不起作用。
第1部分。
e.g.'Bridesmaids'
第2部分。
def get_movies_from_tastedive(name):
baseurl = 'https://tastedive.com/api/similar'
pdict = {'q': name,'type': 'movies','limit': '5'}
movie_resp = requests.get(baseurl, params = pdict)
return movie_resp.json()
SyntaxError:第22行输入错误
答案 0 :(得分:0)
压缩后的代码加上简短的测试代码。
import requests
def get_movies_from_tastedive(name):
r = requests.get('https://tastedive.com/api/similar', params={'q': name, 'type': 'movies', 'limit': '5'})
if r.status_code == 200:
return [m['Name'] for m in r.json()['Similar']['Results'] if m['Type'] == 'movie']
movies = get_movies_from_tastedive('Tony Bennett')
if movies:
print(movies)
else:
print('ERR.Cant read movies')
输出
['The Startup Kids', 'The Englishman Who Went Up A Hill But Came Down A Mountain', 'A Place In The Sun', 'Last Tango In Paris', 'Charlie Chaplin']
答案 1 :(得分:0)
尝试一下
import requests_with_caching
import json
def get_movies_from_tastedive(string):
baseurl="https://tastedive.com/api/similar"
params_diction={}
params_diction["q"]=string
params_diction["type"]="movies"
params_diction["limit"]=5
taste_dive_resp = requests_with_caching.get(baseurl, params = params_diction)
return taste_dive_resp.json()