Как искать текстовый файл для ключевой фразы или ключевого слова, а затем печатать строку, в которой находится ключевая фраза или ключевое слово?
Поиск текстового файла и печать связанных строк в Python?
Ответ 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.