2013-12-04 1 views
0

Как изменить приведенный ниже сценарий, чтобы включить строки, начинающиеся с «word1» и «word3», как показано ниже, печатает только «word2»?Как, используя re.findall (regex) печатать блок текста, который будет содержать строку «start» и «end»?

Желаемый результат:

word1 
word2 
word3 

Содержимое файла test.txt:

word0 
word1 
word2 
word3 
word4 
word5 

Сценарий:

#!/usr/bin/env python 
import os, re 
file = 'test.txt' 
with open(file) as fp: 
    for result in re.findall('word1(.*?)word3', fp.read(), re.S): 
     print result 

ответ

1

Использование re.search с re.DOTALL флагом:

>>> with open('test.txt') as f: 
    print re.search('word1(.*?)word3', f.read(), flags=re.DOTALL).group(0) 
...  
word1 
word2 
word3 
+0

Благодарим вас за ввод данных, ваше решение напечатает все три строки, однако в третьей строке будет напечатано только слово «word3» и пропустить остальную часть линии, есть ли способ включить целую линию, смотрящую на «word3»? – user3066287

Смежные вопросы