Подтвердить что ты не робот

Поиск текстового файла и печать связанных строк в Python?

Как искать текстовый файл для ключевой фразы или ключевого слова, а затем печатать строку, в которой находится ключевая фраза или ключевое слово?

4b9b3361

Ответ 1

searchfile = open("file.txt", "r")
for line in searchfile:
    if "searchphrase" in line: print line
searchfile.close()

Чтобы распечатать несколько строк (простым способом)

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

Запятая в print l, предотвращает появление дополнительных пробелов на выходе; завершающий оператор печати демаркирует результаты из разных строк.

Или еще лучше (украдкой от Марка Рэнсом):

with open("file.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

Ответ 2

with open('file.txt', 'r') as searchfile:
    for line in searchfile:
        if 'searchphrase' in line:
            print line

С извинениями senderle, которые я нагло копировал.

Ответ 3

Обратите внимание на потенциал индекса вне диапазона с "i + 3". Вы можете сделать что-то вроде:

with open("file.txt", "r") as f:
    searchlines = f.readlines()
j=len(searchlines)-1
for i, line in enumerate(searchlines):
    if "searchphrase" in line: 
        k=min(i+3,j)
        for l in searchlines[i:k]: print l,
        print

Изменить: возможно, не нужно. Я просто проверил несколько примеров. x [y] даст ошибки, если y вне диапазона, но x [y: z], похоже, не дает ошибок для значений вне диапазона y и z.