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 something like this?
from itertools import groupby
def per_section(s, delimiters=()):
def key(s):
return not s or s.isspace() or any(s.startswith(x) for x in delimiters)
for k, g in groupby(s.splitlines(), key=key):
if not k:
yield list(g)
if __name__ == '__main__':
print list(per_section('''This is a text block start
This is the end
And this is another
with more than one line
and another line.'''))
print list(per_section('''# Some comments, maybe the title of the following section
This is a text block start
This is the end
# Some other comments and also the title
And this is another
with more than one line
and another line.''', ('#')))
print list(per_section('''!! Some comments, maybe the title of the following section
This is a text block start
This is the end
$$ Some other comments and also the title
And this is another
with more than one line
and another line.''', ('!', '$')))
Output:
[['This is a text block start', 'This is the end'], ['And this is another', 'with more than one line', 'and another line.']]
[['This is a text block start', 'This is the end'], ['And this is another', 'with more than one line', 'and another line.']]
[['This is a text block start', 'This is the end'], ['And this is another', 'with more than one line', 'and another line.']]