Python, как извлечь текст между двумя известными словами в строке? - PullRequest
0 голосов
/ 07 марта 2019

как извлечь текст между двумя известными словами в строке с условием, что текст между этими словами может быть: i) 1 символ ii) 1 слово iii) 2 слова и т. Д.

Образец текста:

text = ("MNOTES - GEO GEO MNOTES 20 231-0005 GEO GEO GEO GEO GEO MNOTES SOME REVISION MNOTES CASUAL C GEO GEO GEO GEO GEO MNOTES F232322500 MNOTES HELP PAGES GEO GEO GEO GEO MNOTES SHEET 1 OF 3 GEO GEO MNOTES CASUAL E. GEO GEO MNOTES SITPOPE/TIN AY GEO GEO MNOTES R GEO GEO GEO GEO MNOTES 22+0436/T.SKI/11-AUG-1986 GEO GEO GEO GEO MNOTES 231-0045 GEO")

У меня есть строка, подобная приведенной выше, в которой встречаются несколько этих двух известных слов 'MNOTES' и 'GEO', однако текст между ними может быть любым и любым количеством слов.

Я хотел извлечь иногда текст, который имеет только один символ между этими двумя известными словами, или иногда текст, который имеет 2 слова между этими двумя известными словами, или иногда текст, который имеет 6 слов между этими двумя известными словами и т. Д., Итак, как я могу извлечь вместе с условием?

1 Ответ

0 голосов
/ 07 марта 2019

Использование re.findall.

import re

re.findall('MNOTES(.*?)GEO', text)

В результате:

[' - ', ' 20 231-0005 ', ' SOME REVISION MNOTES CASUAL C ', ' F232322500 MNOTES HELP PAGES ', ' SHEET 1 OF 3 ', ' CASUAL E. ', ' SITPOPE/TIN AY ', ' R ', ' 22+0436/T.SKI/11-AUG-1986 ', ' 231-0045 ']

Редактировать

Чтобы получить определенное количество символов, будет работать следующее:

re.findall('MNOTES\s?(.{1})\s?GEO', text)

Результаты в

['-', 'R']

и получить только результаты длиной 6-8 символов:

re.findall('MNOTES\s?(.{6,8})\s?GEO', text)

Результаты:

['- GEO ', 'CASUAL C', 'R GEO ', '231-0045']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...