Форум сайта python.su
Здравствуйте.
Подскажите, необходимо найти все слова и каждую последнюю точку всех предложений в строке.
Что-то вроде этого:
input:
'First sentence... *&%$#79686 585 ... Second sentence 89^&^ continues... The third one..'
'First sentence. Second sentence continues. The third one.'
Отредактировано Kurtz (Июнь 23, 2017 13:28:22)
Офлайн
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.'
Отредактировано papuas (Июнь 19, 2017 20:41:37)
Офлайн
Будет время, скидывайте, пока что
line = re.findall('(^\')?([a-zA-Z]+(\.\s?|\s)?|(\'$)){1,}', line)
Офлайн
Задание неконкретное.
Вот для такой строки какой результат должен быть?
abc *&%$#79686 585 … 123 ... abc ... ...
Отредактировано py.user.next (Июнь 21, 2017 12:00:04)
Офлайн
'abc. abc.'
Отредактировано Kurtz (Июнь 23, 2017 10:35:48)
Офлайн
А 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)
Офлайн
Спасибо, то что нужно!
Офлайн