Kак сделать вывод всего текста из файла

Короче, писал код на поиск данных в текстовом файле, пользователя спрашивают что нужно найти и это ищется в файле, но работает не так, как я хотел.

Допустим значение 1, и код должен выводить все 1, то есть, если содержимое текстового файла числа от 1-20, то выводиться должны: 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 (это отдельные строки в файле).

Код:

search = input('запрос:')
f = open('test.txt', encoding='utf-8')
result = f.read()
f.close()
c = result.count(search)
while c > 0:
    print(search)
    c = 1

Ответы (2 шт):

Автор решения: w4sQ

Вот:

search = input('Запрос: ')
with open('test.txt', encoding='utf-8') as file:
    lines = file.readlines()
[print(line.strip(), end=' ') for line in lines if line.count(search)]
→ Ссылка
Автор решения: MarianD
search = input('запрос: ')
with open('test.txt', encoding='utf-8') as f:
    for line in f:
        if search in line:
            print(line)             # или  print(line[:-1])  или  print(line.strip())

Объяснение:

  1. Лучше применить with, чем вручную закрывать файл. Файл закроется автоматически после выхода из with.

  2. search in line значит, что строка search находится в строке line, чего вы и хотите.

  3. В переменной line будет вся строка, включая символ перехода на новую строку (\n). Потому для отсутствия лишней пустой строки после каждого print(line) может быть более удобным вывести отдельные строки без последнего символа: print(line[:-1]) или print(line.strip()).

→ Ссылка