Вы не много делитесь, но ясно одно:
- вы можете как-то отличить важную строку от неважной;
- вы хотите прочитать каждую строку файла
- вы хотите, чтобы последовательные «важные» результаты были сгруппированы вместе
Цикл над файлом:
with open('myfile.txt', 'r') as f:
for line in f:
# do something with `line`
Вы можете собирать строки, которые важны в списке, и всякий раз, когда вы достигаете неважной строки или конца файла, если в этом списке есть строки, добавляйте его в свой результат.
Собираем все вместе:
def is_important(line):
return 'important' in line.split() # replace with an actual test
result = []
with open('myfile.txt', 'r') as f:
important = []
for line in f:
if is_important(line):
important.append(line)
elif important:
result.append(important)
important = []
# done reading, add remaining important lines to result
if important:
result.append(important)
print(result)
Этот код работает для вашего примера, просто измените is_important
, чтобы он имел смысл.
Обратите внимание, что пример кода будет содержать символ новой строки в конце каждой строки - есть разные способы избавиться от него, в зависимости от того, хотите ли вы прочитать весь файл сразу или по одной строке за раз. Не должно быть трудно понять это самостоятельно.
Если вы искали одно из этих коротких, но трудно читаемых решений:
from itertools import groupby
def is_important(line):
return 'important' in line.split() # replace with an actual test
result = [list(x) for c, x in groupby(open('myfile.txt', 'r').readlines(), lambda x: is_important(x)) if c]
print(result)