выполните поиск по нескольким массивам и распечатайте весь список, если нужный элемент найден

#python #arrays #list

#питон #массивы #Список

Вопрос:

Вот мой текущий код:

 search=input('Enter a book title')  def read_book():  booksdata=[]  f=open('books2.txt', 'r')  for record in f:  cleanrecord=record.strip()  books=cleanrecord.split(',')  booksdata.append(books)  f.close()  return booksdata  read_book()  

Он открывает текстовый файл, в котором хранятся такие данные:

 1, The Hunger Games, Adventure, Suzanne Collins, 1/08/2006, coai 2, Harry Potter and the Order of the Phoenix, Fantasy, J.K Rowling, 25/09/2021, ajyp  

Я пытаюсь запрограммировать его так, чтобы, если пользователь введет «Голод», весь список(ы), содержащий голод, будет распечатан:

 ['1', ' The Hunger Games', ' Adventure', ' Suzanne Collins', ' 1/08/2006', ' coai']  

Комментарии:

1. Вам понадобится условное выражение (например if ), чтобы проверить, есть ли слово, books и добавить его только в том случае, если это правда. И вам понадобится инструкция по печати или какой-то цикл печати всех книг, которые будут возвращены в конце.

Ответ №1:

Вам нужно проверить, есть ли ваш ввод в каждой строке

 search=input('Enter a book title')  def read_book():  booksdata=[]  f=open('books2.txt', 'r')  for record in f:  if search in record: # check  cleanrecord=record.strip()  books=cleanrecord.split(',')  booksdata.append(books)  f.close()  return booksdata  result = read_book() print (result)   

выход:

 [['1', ' The Hunger Games', ' Adventure', ' Suzanne Collins', ' 1/08/2006', ' coai']]  

Ответ №2:

 for d in read_book():  if any(['hunger' in w.lower() for w in d]):  print(d)  

Функция any() принимает список логических значений в качестве аргумента и возвращает значение True, если какое-либо из значений является истинным. В списке, который мы ему даем, для каждого элемента в d хранится информация о том, присутствует ли строка «голод» в этом элементе (является подстрокой).