2015-04-01 4 views
0

Я пытаюсь посмотреть, одинаково ли между двумя страницами фильм, и для этого мне хотелось бы сравнить Актеры как один из критериев. Тем не менее, актеры часто перечисляются по-разному на разных страницах. Например:Fuzzy-match Список людей

  • На этой странице, 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

+1

@MattDMo: Если пересечение содержит достаточно большой набор участников, вы можете считать их одинаковыми ... или вы можете использовать эту информацию в сочетании с другой информацией, чтобы решить, являются ли фильмы одинаковыми или нет ... – ArtOfWarfare

+0

@ArtOfWarfare верный. Я написал свой комментарий, когда ответ был [не совсем ничего] (http://stackoverflow.com/revisions/29381487/1). – MattDMo

1

Try:

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

Тогда у вас есть similaractors как список всех актеров, которые они разделяют. Вызовите len(similaractors), чтобы получить количество похожих участников, а затем вы можете print(similaractors) и делать все остальное, что можете сделать со списком.