С регулярным выражением вы можете использовать 'values(.*)total'
или с '\n'
- 'values\n(.*)\ntotal'
text = '''DATA_out file
values
DATA_LINE 1
DATA_LINE 2
DATA_LINE 3
DATA_LINE 4
total
'''
import re
result = re.search('values(.*)total', text, re.DOTALL)
if result:
print(result[1])
#print(result.group(1))
Без regex
вы можете использовать find()
, чтобы найти позиции values
иtotal
по отдельности, объявление затем нарезать его на text[start:end]
text = '''DATA_out file
values
DATA_LINE 1
DATA_LINE 2
DATA_LINE 3
DATA_LINE 4
total
'''
start = text.find('values')
end = text.find('total', start)
if start > -1 and end > -1:
start += len("values")
print(text[start:end])
Если вы хотите читать из файла построчно.
Я использую io.StringIO()
для имитации файла
text = '''DATA_out file
values
DATA_LINE 1
DATA_LINE 2
DATA_LINE 3
DATA_LINE 4
total
'''
import io
#f = open("input.txt")
f = io.StringIO(text)
lines = []
# read till you find line with 'values'
for line in f:
if 'values' in line:
break
# read till you find line with 'values'
for line in f:
if 'total' in line:
break
lines.append(line)
else: # it is `for/else`, not `if/else`
#if not found `total` (so there was no `break`) then clear list
lines = []
if lines:
print("".join(lines))