Искать текстовый файл и печатать связанные строки в Python? - PullRequest
29 голосов
/ 24 января 2011

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

Ответы [ 3 ]

55 голосов
/ 24 января 2011
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
19 голосов
/ 24 января 2011
with open('file.txt', 'r') as searchfile:
    for line in searchfile:
        if 'searchphrase' in line:
            print line

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

2 голосов
/ 26 марта 2013

Обратите внимание на потенциал для индекса вне диапазона с "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 вне диапазона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...