Я не могу найти решение проблемы с регулярным выражением, которая у меня есть. На самом деле это своего рода дополнительный вопрос к этому сообщению: end-of-file">Найти строку между двумя подстроками И между строкой и концом файла
Я создал следующий пример текста (в моем приложении текст намного длиннее и содержит несколько файлов и т. д.):
Курс 22/09/2010 1. Раннее дежурство Жозефина, Янсен 22-09-2010 10:37:08 Дата 22/09/2010 Дежурство 1. Раннее дежурство 1.3 Здесь могут быть некоторые другие сопутствующие вещи Nursegoals Interventions Record Это теперь четвертое примечание. 6.2.1.3 Замешательство: наблюдение. Запись вмешательств Nursegoals Это новая заметка (снова), я называю ее заметкой 3. Курс 22/09/2010 1. Запись раннего дежурства Это снова заметка, я называю ее заметкой 2. Apple: 0/меньше Курс 22/ 09/2010 3. Ночное дежурство Жозефина, Янсен 22-09-2010 06:22:25 Дата 22/09/2010 Курс 3. Ночное дежурство 1.3 Что-то еще здесь Nursegoals Запись вмешательств 6.2.1.3 Замешательство: наблюдение. Курс записи вмешательств Nursegoals 22/09/2010 3. Запись ночного дежурства Это новая заметка, я называю ее заметкой 1.
Теперь я хочу проанализировать конкретную информацию из этого текста. Меня интересует «Запись», поэтому текстовая часть, которая стоит за записью. и дату для этой конкретной записи, под которой я имею в виду дату, например 11.02.2010, и понятие раннего дежурства, позднего дежурства или ночного дежурства (таким образом, дата будет: «09-02-2010 1. Раннее дежурство» ). У меня проблема в том, что в файлах нет реальной согласованности, поэтому иногда есть 2 заметки для одной даты, а иногда только одна. Также иногда раздел заметок содержит текст, а иногда нет.
Я знаю, как анализировать раздел «Запись», но я не знал, как сначала анализировать дату, а затем раздел (ы) заметок. Поэтому я решил разделить проблему на две части. Мой первый шаг — разделить весь файл на отдельные разделы даты. Второй шаг: переберите все разделы даты, чтобы получить примечания для этого конкретного раздела даты (с регулярным выражением). Затем я бы сделал своего рода список, который содержал бы конкретную дату (если бы мне нужна была только конкретная дата, чтобы поместить ее в ячейку столбца, например, я бы просто проанализировал первые 13 символов этого раздела даты.) и примечание (s), которые связаны с этой датой. Например:
list = [08-02-2010 1. Раннее дежурство, [примечание1, примечание2], 08-02-2010 2. Позднее дежурство, [примечание1] и т. д.]
Давайте просто сосредоточимся на анализе даты, чтобы моя проблема была ясна. Я использую следующий код:
date = r'Course\s+(.*?)(?:Course|$)'
date_list = re.findall(date, text, re.DOTALL)
for i in date_list:
print (i)
print ('XXX')
Результат:
22/09/2010 1. Досрочное дежурство Жозефина, Янсен 22-09-2010 10:37:08 Дата22/09/2010 Дежурство 1. Раннее дежурство 1.3 Здесь могут быть некоторые другие сопутствующие вещи Nursegoals Interventions Record Это теперь четвертое примечание . 6.2.1.3 Замешательство: наблюдение. Запись вмешательств Nursegoals Это новое, примечание (снова), я называю его примечанием 3. XXX 22/09/2010 3. Nightduty Josephine, Jansen 22-09-2010 06:22:25 Дата 22/09/2010 XXX 22/ 09/2010 3. Nightduty Record Это новая заметка, я называю ее заметка 1. XXX
В этом выводе отсутствуют следующие элементы:
['Курс 22/09/2010 1. Запись раннего дежурства Это снова заметка, я называю ее заметкой 2. Apple: 0/меньше']
а также
['3. Nightduty 1.3 Что-то еще здесь Nursegoals Запись вмешательств 6.2.1.3 Замешательство: наблюдение. Медсестринские вмешательства]
Так что это как бы перескакивает, так как я думаю, что регулярное выражение не рассматривает конец слова «Курс», а также как начало нового, так сказать, совпадения.
Было бы здорово, если бы кто-нибудь мог мне помочь :) Возможно, я что-то упускаю..