2015-04-01 111 views
0

我想看看两部电影之间的电影是否相同,并且要这样做我想比较演员作为其中一项标准。但是,演员经常在不同的页面上列出。例如:模糊匹配人名单

  • 在此页面,https://play.google.com/store/movies/details?id=cSdcb2KOH74,演员们被列为“米克哈尔·加拉斯蒂恩,丹尼·特乔,吉列尔莫·迪亚斯,奥列格·塔克塔罗维,凯姆·惠特利,克里斯托弗罗宾·米勒,罗伯特熊,弗拉基米尔·亚格利奇,乔希·麦克勒伦”

  • 一此页面,http://www.imdb.com/title/tt2167970/,演员为“伊万·斯特诺弗,英格丽·奥莱里斯卡亚,弗拉基米尔·亚格利奇”

以前,我在做一个非常粗略的比赛:

if actors_from_site_1[0] == actors_from_site_2[0] 

但是,从上面的例子可以看出,这不是一个好技术。看看一部电影中的演员是否与其他电影演员相匹配会更好?

回答

2

你可以检查两组的交集的长度演员。

if len(set(actors_from_site_1).intersection(set(actors_from_site_2))): 

,或者你可以这样做:

if any(actor in actors_from_site_1 for actor in actors_from_site_2): 
1

如果所有的列表以逗号分隔的演员的名字,分裂他们的逗号,小写的名字,并得到交集:

actors_from_site_1 = set(actors_from_site_1.lower().split(',')) 
actors_from_site_2 = set(actors_from_site_2.lower().split(',')) 

common_actors = actors_from_site_1 & actors_from_site_2 
+0

...然后呢? – MattDMo 2015-04-01 01:45:59

+1

@MattDMo:如果路口包含足够多的演员组合,您可以将其视为相同......或者您可以将该信息与其他信息结合使用以决定电影是否相同... – ArtOfWarfare 2015-04-01 01:52:47

+0

@ArtOfWarfare正确。当答案是[不是真的]时,我写了我的评论(http://stackoverflow.com/revisions/29381487/1)。 – MattDMo 2015-04-01 15:43:22

1

尝试:

similaractors = [] 
for actor in actors_from_site_1: 
    if actor in actors_from_site_2: 
     similaractors.append(actor) 

然后,你有similaractors所有他们分享的演员名单。请致电len(similaractors)以获取相似演员的人数,然后您可以print(similaractors)并执行您可能对列表执行的所有操作。