#python #list
Вопрос:
Я пытаюсь создать приложение, которое должно будет использовать набор данных IMDb. IMDb предоставляет наборы данных, в которых есть все названия на IMDb, включая телешоу и видеоигры. Например:
«tt9620292 фильм Многообещающая Молодая женщина Многообещающая Молодая женщина 0 2020 N 113 Преступление,Драма,Триллер
tt1568322 видеоИгра Бэтмен: Аркхем Сити Бэтмен: Аркхем Сити 0 2011 N N Боевик,Приключения,Криминал
tt0141842 Телесериалы Сопрано Сопрано 0 1999 2007 55 Преступление,Драма»
Я прочитал в наборе данных IMDb и разбил каждую строку на список, разделив их по вкладкам, что дает мне кучу списков, в которых в каждом списке есть описание названия(фильм, ТВ-код, короткометражка, видеоигра и т. Д.). Конечная цель состоит в том, чтобы прочитать этот текстовый файл набора данных IMDb, а затем записать его в другой файл, содержащий только заголовки с описанием фильма, сериала или короткометражки. На данный момент я распечатываю списки тестов, чтобы проверить, смогу ли я правильно отфильтровать все, кроме фильмов, телевизионных фильмов и коротких названий.
Теперь я застрял в точке, где я могу распечатать индекс одного из каждого списка, который выводит только описание каждого заголовка:вот так, но когда я пытаюсь использовать один и тот же список и индекс для заполнения другого списка только фильмами, сериалами и короткометражными названиями, он заполняет список каждым названием независимо от этого.
IMDbFile = open("titleTest", "r")
lineList = IMDbFile.readlines()
listOfList = []
for x in lineList:
listOfList.append(x.split("t"))
movieOnly = []
for x in listOfList:
if x[1] == "short" or "movie" or "tvMovie":
movieOnly.append(x)
#print(x[1])
for n in movieOnly:
print(n)
IMDbFile.close()
При печати списка «Только для фильмов» я получаю каждое название:вот так
Комментарии:
1. Эта линия не сработает.
if x[1] == "short" or "movie" or "tvMovie":movieOnly.append(x)
Вместо этого попробуйте вот это.if x[1] in ("short","movie","tvMovie"):pass
2. @BuddyBobIII это работает, спасибо!
Ответ №1:
Я думаю, что ваша проблема заключается в том, как вы написали заявление if. Вместо:
movieOnly = []
for x in listOfList:
if x[1] == "short" or "movie" or "tvMovie":
movieOnly.append(x)
пробовать
movieOnly = []
for x in listOfList:
if x[1] in ["short","movie","tvMovie"]:
movieOnly.append(x)
Причина в том, что это:
if 'a' == 'b' or 'c' or 'd':
print('here')
будет напечатано «здесь», потому что
or 'c'
оценивает, является ли «c» истинным, а не является ли » a «== «c»
Комментарии:
1. это работает для меня, спасибо! спасибо также за объяснение