Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 18, 2017 20:22:08

Kurtz
Зарегистрирован: 2016-03-18
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

regex найти все буквы и точку всех предложений в строке

Здравствуйте.
Подскажите, необходимо найти все слова и каждую последнюю точку всех предложений в строке.
Что-то вроде этого:
input:

 'First sentence...  *&%$#79686 585 ... Second sentence 89^&^    continues...      The third one..'
output:
 'First sentence. Second sentence continues. The third one.'

Поискал по stack overflow, не один из предложенных там похожих вариантов не работает как нужно.
Спасибо.

Отредактировано Kurtz (Июнь 23, 2017 13:28:22)

Офлайн

#2 Июнь 19, 2017 17:48:30

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

regex найти все буквы и точку всех предложений в строке

 cat test
'First sentence… *&%$#79686 585 … Second sentence 89^&^ continues… The third one..'

 # sed 's/…/\. /g' test | grep -Po "(^\')?([a-zA-Z]+(\.\s?|\s)?|(\'$)){1,}" | tr -d '\n'
'First sentence. Second sentence continues. The third one.'

чуть позже скину с модулем re

Отредактировано papuas (Июнь 19, 2017 20:41:37)

Офлайн

#3 Июнь 21, 2017 11:39:58

Kurtz
Зарегистрирован: 2016-03-18
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

regex найти все буквы и точку всех предложений в строке

Будет время, скидывайте, пока что

 line = re.findall('(^\')?([a-zA-Z]+(\.\s?|\s)?|(\'$)){1,}', line)
не дает нужного результата.

Офлайн

#4 Июнь 21, 2017 11:58:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9998
Репутация: +  857  -
Профиль   Отправить e-mail  

regex найти все буквы и точку всех предложений в строке

Задание неконкретное.

Вот для такой строки какой результат должен быть?

abc *&%$#79686 585 … 123 ... abc ... ...



Отредактировано py.user.next (Июнь 21, 2017 12:00:04)

Офлайн

#5 Июнь 23, 2017 10:34:20

Kurtz
Зарегистрирован: 2016-03-18
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

regex найти все буквы и точку всех предложений в строке

 'abc. abc.'
То есть мы рассматриваем каждую строку как набор предложений, каждое из которых состоит из букв и заканчивается точкой. Мы ищем все буквы до тех пор пока не встретим точку. Это индикатор того, что предложение закончилось. Далее повторяем все заново.

Отредактировано Kurtz (Июнь 23, 2017 10:35:48)

Офлайн

#6 Июнь 23, 2017 11:24:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9998
Репутация: +  857  -
Профиль   Отправить e-mail  

regex найти все буквы и точку всех предложений в строке

А regex тут зачем? Проще всё это конечным автоматом сделать.



Офлайн

#7 Июнь 23, 2017 12:32:12

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

regex найти все буквы и точку всех предложений в строке

 >>> s = 'First sentence...  *&%$#79686 585 ... Second sentence 89^&^    continues...      The third one..'
>>> import re
>>> s = re.sub('[^a-zA-Z. ]','',s)
>>> l = [i.strip() for i in s.split('.') if i.strip()]
>>> l
['First sentence', 'Second sentence     continues', 'The third one']
>>> l = [re.sub('[ ]+',' ',i) for i in l]
>>> l
['First sentence', 'Second sentence continues', 'The third one']
>>> '. '.join(l)+'.'
'First sentence. Second sentence continues. The third one.'
>>> 

Отредактировано vic57 (Июнь 23, 2017 12:32:32)

Офлайн

#8 Июнь 23, 2017 13:34:47

Kurtz
Зарегистрирован: 2016-03-18
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

regex найти все буквы и точку всех предложений в строке

Спасибо, то что нужно!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version