Как заставить Python искать в текстовом файле и печатать каждую соответствующую строку? - PullRequest
1 голос
/ 28 февраля 2020

Извинения за общий вопрос нуб. Я пытаюсь выучить Python. Я искал этот сайт и не нашел решение для меня. Пожалуйста, дайте мне знать, если это уже объяснено.

Я пытаюсь создать программу поиска для списка заголовков mov ie в файле .txt, и я хочу, чтобы он печатал каждую строку содержит слова, введенные пользователем.

Например, если две строки в текстовом файле

22. It Happened One Night (1934)
23. Wonder Woman (2017)

, а пользователь вводит "on", я бы хотел, чтобы оба эти (и любые другие), чтобы появиться, так как оба содержат «вкл» в какой-то момент.

Я пытался использовать

with open("movies.txt", "r") as f:
     searchlines = f.readlines()
for i, line in enumerate(searchlines):
    if searchphrase in line: 
        for l in searchlines[i:i+3]: print(l),
        print

, но у меня это не сработало.

Ответы [ 3 ]

0 голосов
/ 28 февраля 2020

Вы можете сослаться на фрагмент кода ниже

def search(text_search):
    with open("movies.txt", "r") as f:
        searchlines = f.readlines()
        for i, line in enumerate(searchlines):
            # if line contains text_search we will print it
            if text_search in line:
                print(line)
if __name__ == "__main__":
    search("One")
0 голосов
/ 28 февраля 2020
def search(text_search):
    with open("movies.txt", "r") as f:
        searchlines = f.readlines()
        for i, line in enumerate(searchlines):
            if text_search.casefold() in line.casefold():
                print(line)

Пример вызова вашей функции с помощью: search ("ON")

Отредактированный отступ

0 голосов
/ 28 февраля 2020

Примерно так:

with open("movies.txt", "r") as file:
    lines = file.read().splitlines()

keyword = "on"

filtered_lines = filter(lambda line: keyword.casefold() in line.casefold(), lines)

for line in filtered_lines:
    print(line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...