Разделить текст на абзацы - PullRequest
0 голосов
/ 17 ноября 2018

Я знаю, что могу использовать что-то вроде этого

theText='She loves music. Her favorit instrument is the piano.\n\n However, \n\n she does not play it.'
paragraphs = [p for p in theText.split('\n\n') if p]
for i,p in enumerate(paragraphs):
    print(i,p)

для разделения текста по абзацам.

Однако я хотел бы добавить дополнительное условие, чтобы следующее предложение не могло начинаться со строчной буквы. Фактический код обеспечивает

0 She loves music. Her favorit instrument is the piano.
1  However, 
2  she does not play it.

Я бы хотел

0 She loves music. Her favorit instrument is the piano.
1  However, she does not play it.

Я считаю, что мне следует использовать какое-то регулярное выражение, но я не мог понять правильную структуру.

1 Ответ

0 голосов
/ 17 ноября 2018

Вы можете использовать следующее регулярное выражение, которое гарантирует, что за вашим \n\n следует заглавная буква (и необязательный пробел), используя Lookahead ?=.Кроме того, в вашем перечислении вам придется избавиться от вашего \n\n (здесь, используя re.sub):

import re
paragraphs = re.split('\n\n\s?(?=[A-Z])',theText)
for i,p in enumerate(paragraphs):
    print(i,re.sub('\n\n\s?','',p))

0 She loves music. Her favorit instrument is the piano.
1 However, she does not play it.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...