Python's groupby() function is good for doing this:
from itertools import groupby
with open('input.txt') as f_input:
data = [list(g) for k, g in groupby(f_input, lambda x: not x.startswith("-------!@#$-------")) if k]
data = [''.join(x) for x in data]
print data
Giving you data holding:
['text line1\ntext line2\n', 'text line3\ntext line4\n']
The first list comprehension reads the file grouping lines that do not start with your line separator. This results in data holding:
[['text line1\n', 'text line2\n'], ['text line3\n', 'text line4\n']]
Next, a second list comprehension is used to join back the multiple lines.
So:
data[0] --> 'text line1\ntext line2\n'
data[1] --> 'text line3\ntext line4\n'
To parse out sections containing certain words, the second list comprehension could be replaced with this one:
data = [''.join(x) for x in data if 'dummy test' not in ''.join(x)]