2017-02-08 2 views
0

У меня вопрос. Я пытаюсь получить определенную строку между двумя подстроками из текстового файла.Python: Получить текст между двумя строками

Текстовый файл больше, но часть его содержит это:

r\n[url=asitename][/url]\r\n[url=x]hello[/url]\r\n[url=x]a text[/url]\r\n[url=n]test[/url]\r\n\ttest
\r\n\t\t\r\n\t\twarn user\r\n\t\r\n\t2\r\n\t02-06-2017, 01:44 am
by cinccino. end: modcp_reports_report -->

Теперь, я заинтересован в тексте следующего между «asitename» и «конец:»

Я хотел бы получить текст между этими строками.

Я попытался это:

lookup = 'asitename' 
myFileread = myFile.read() 
re.search(lookup+'(.*)end', myFileread).group(1) 

Однако, он возвращает следующее сообщение об ошибке:

AttributeError: 'NoneType' object has no attribute 'group'

Я запутался, почему это не работает. Он работает с более простыми строками.

+1

Можете ли вы поделиться выход вы хотите? –

ответ

0

Return None if no position in the string matches the pattern; note that this is different from finding a zero-length match at some point in the string.

Похоже, что .search() возвращает None. Согласно python api это означает, что нет позиции, которая соответствует шаблону.

1

Используйте re.S флаг, который заставит . соответствовать символ новой строки (ы) также:

>>> re.search(r'asitename(.*?)end', myFileread, re.S).group(1) 
'][/url]\r\n[url=x]hello[/url]\r\n[url=x]a text[/url]\r\n[url=n]test[/url]\r\n\ttest\n\r\n\t\t\r\n\t\twarn user\r\n\t\r\n\t2\r\n\t02-06-2017, 01:44 am\nby cinccino. 
+0

К сожалению, это возвращает ту же ошибку. – hellobro

+0

Убедитесь, что 'myFileread' является правильной строкой –

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