vlad003 правильно: если у вас есть символы новой строки в строках;они будут новыми линиями!В этом случае вместо этого я бы разделил «Сводка»:
import itertools
def chunks( filePath ):
"Since you have newline characters in each section,\
you can't read each line in turn. This function reads\
lines of the file and splits them into chunks, restarting\
each time 'Summary' starts a line."
with open( filePath ) as theFile:
chunk = [ ]
for line in theFile:
if line.startswith( "Summary" ):
if chunk: yield chunk
chunk = [ line ]
else:
chunk.append( line )
yield chunk
def nth(iterable, n, default=None):
"Gets the nth element of an iterator."
return next(islice(iterable, n, None), default)
def getStatus( chunkNum ):
"Get the nth chunk of the file, split it by ";", and return the result."
chunk = nth( chunks, chunkNum, "" ).split( ";" )
if not chunk[ 0 ]:
raise SomeError # could not get the right chunk
if "meeting" in chunk[ 1 ].lower() or "call in number" in chunk[ 1 ].lower():
return "call-in meeting"
else:
return "None Inferred"
Обратите внимание, что это глупо, если вы планируете читать все фрагменты файла, поскольку он открывает файл и читает его один раз зазапрос.Если вы планируете делать это часто, то стоит проанализировать его в лучшем формате данных (например, массив статусов).Это потребует одного прохода по файлу и даст вам гораздо лучший поиск.