如何从 movie.get('casts') 函数获取名称
How to get name from movie.get('casts') function
您好,我正在尝试使用 IMDbPY 库创建一个数据库。但是当我尝试使用 get('cast') 获取名称时。
我该如何解决?代码如下:
from imdb import IMDb
ia = IMDb()
def getmovieID( movie_name ):
movie = ia.search_movie(movie_name)[0] # a Movie instance.
get_movie = ia.get_movie(movie.movieID)
return get_movie
def getcast(movie_name):
movie = getmovieID(movie_name)
casts = []
cast = movie.get('casts')
for a in cast['name']:
casts.append(a)
return casts
print(getcast('The Dark Knight'))
它说:
getcast 中的文件 "C:.../Python/imdbtest.py",第 17 行
对于演员['name']:
类型错误:字符串索引必须是整数
您必须考虑 movie.get('casts')
将 return Person 对象列表,而不是带有 'name' 键的字典。
我注意到的另一件(次要)事情是您获得了第一个结果的 movieID,然后再次获取电影。这可以使用 ia.update
方法省略。
一个有效的例子(仍然假设了很多事情,比如搜索至少会给你一个结果):
#!/usr/bin/env python3
import sys
from imdb import IMDb
ia = IMDb()
def getmovieID(movie_name):
movie = ia.search_movie(movie_name)[0] # a Movie instance.
ia.update(movie)
return movie
def getcast(movie_name):
movie = getmovieID(movie_name)
casts = []
for person in movie.get('cast', []):
casts.append(person['name'])
return casts
print(getcast('The Dark Knight'))
重构您的代码。
from imdb import IMDb
ia = IMDb()
def getmovieID(movie_name):
movie = ia.search_movie(movie_name)[0]
get_movie = ia.get_movie(movie.movieID)
return get_movie
def getcast(movie_name):
movie = getmovieID(movie_name)
casts_objects = movie.get('cast')
casts = []
for person in casts_objects:
casts.append(person.get('name'))
return casts
print(getcast('The Dark Knight'))
您好,我正在尝试使用 IMDbPY 库创建一个数据库。但是当我尝试使用 get('cast') 获取名称时。 我该如何解决?代码如下:
from imdb import IMDb
ia = IMDb()
def getmovieID( movie_name ):
movie = ia.search_movie(movie_name)[0] # a Movie instance.
get_movie = ia.get_movie(movie.movieID)
return get_movie
def getcast(movie_name):
movie = getmovieID(movie_name)
casts = []
cast = movie.get('casts')
for a in cast['name']:
casts.append(a)
return casts
print(getcast('The Dark Knight'))
它说: getcast 中的文件 "C:.../Python/imdbtest.py",第 17 行 对于演员['name']:
类型错误:字符串索引必须是整数
您必须考虑 movie.get('casts')
将 return Person 对象列表,而不是带有 'name' 键的字典。
我注意到的另一件(次要)事情是您获得了第一个结果的 movieID,然后再次获取电影。这可以使用 ia.update
方法省略。
一个有效的例子(仍然假设了很多事情,比如搜索至少会给你一个结果):
#!/usr/bin/env python3
import sys
from imdb import IMDb
ia = IMDb()
def getmovieID(movie_name):
movie = ia.search_movie(movie_name)[0] # a Movie instance.
ia.update(movie)
return movie
def getcast(movie_name):
movie = getmovieID(movie_name)
casts = []
for person in movie.get('cast', []):
casts.append(person['name'])
return casts
print(getcast('The Dark Knight'))
重构您的代码。
from imdb import IMDb
ia = IMDb()
def getmovieID(movie_name):
movie = ia.search_movie(movie_name)[0]
get_movie = ia.get_movie(movie.movieID)
return get_movie
def getcast(movie_name):
movie = getmovieID(movie_name)
casts_objects = movie.get('cast')
casts = []
for person in casts_objects:
casts.append(person.get('name'))
return casts
print(getcast('The Dark Knight'))