如何从movie.get('casts')函数中获取名称

2024-09-30 14:34:16 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我正在尝试使用IMDbPY库创建一个数据库。但当我试图用get('cast')获取name时。 我怎样才能修好它?代码如下:

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中第17行的文件“C:…/Python/imdbtest.py” 对于内播['name']:

TypeError:字符串索引必须是整数


Tags: 代码name数据库getreturndefmovieimdb
2条回答

您必须考虑^ {CD1>}将返回一个HOLL对象的列表,而不是一个带有“名称”键的字典。

我注意到的另一件(次要)事情是,您获取第一个结果的电影ID,然后再次获取电影。这可以使用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'))

相关问题 更多 >