I have an input file as such:
This is a text block start
This is the end
And this is another
with more than one line
and another line.
The
How about pass a predicate?
def per_section(it, is_delimiter=lambda x: x.isspace()):
ret = []
for line in it:
if is_delimiter(line):
if ret:
yield ret # OR ''.join(ret)
ret = []
else:
ret.append(line.rstrip()) # OR ret.append(line)
if ret:
yield ret
Usage:
with open('/path/to/file.txt') as f:
sections = list(per_section(f)) # default delimiter
with open('/path/to/file.txt.txt') as f:
sections = list(per_section(f, lambda line: line.startswith('#'))) # comment