Python. Разбить строку по точкам, игнорируя точки в описании даты. Т.е. надо после точки сделать "с новой строки", игнорируя точки в дате

Рейтинг: 0Ответов: 3Опубликовано: 24.01.2023

Всем привет. Дан текст типа:"Внимание.Планируются профилактические работы.Они будут проведены 30.01.2023.Обращайтесь за справками" Надо: каждое предложение (после точки) с новой строки. Я решаю это методом str.replace('.', '\n), но тогда разрываются цифры даты. Тогда я решил ввести цикл с условием:

for i in range(0, len(str)):
   if str[i] == '.' and str[i+1].isalpha():
    str = str.replace('.', '\n')

но всё равно цифры рвёт. Какой подход посоветуете? что я делаю не так?

Ответы

▲ 1

Решено с помощью регулярных выражений так:

import re

text = "Внимание.Планируются профилактические работы.Они будут проведены 30.01.2023.Обращайтесь за справками"

pattern = r'([.])([\D])'
result = re.sub(pattern, r"\1\n\2", text)
print(result)
▲ 0

Сделай перебор букв и если буква будет Заглавной савь "/n".

stroke = "Внимание.Планируются профилактические работы.Они будут проведены 30.01.2023.Обращайтесь за справками"
strokeexit = ""


for i in stroke:
    if i.isupper():
        strokeexit+="\n"
    strokeexit+=i
print(strokeexit)

В таком случае вывод:

python output

▲ 0

Как вариант - .[^(\d{2,2}.(\d{2,2}|\d{2,4}))] - чтобы за "." не следовала последовательность из 2 цифр + точка + 2 или 4 цифры