Functional (stateless) implementation using Python and lazy generators:
import itertools
def get_lines_between_marks(ilines, start_mark, end_mark):
for line in ilines:
if line.strip().lower() == start_mark:
yield list(itertools.takewhile(lambda s: s.strip().lower() != end_mark, ilines))
for group in get_lines_between_marks(open("file.txt"), "mark begin", "mark end"):
for line in group:
print line,
And now your second request is trivial (see iterlast here ):
def iterlast(it):
return reduce(lambda x, y: y, it)
for line in iterlast(get_lines_between_marks(open("file.txt"), "mark begin", "mark end")):
print line,
source
share