@Roqvie

Как разделить строку по заглавным буквам?

Хочу разделить строку на подстроки в список.
Причем каждая подстрока должна начинаться с заглавной буквы

Пример строки:

Численные методы, Высшая математика, дополнительные главы высшей математики, Дополнительные главы по численным методам, Дополнительные главы математического анализа, Теория упругости, Профессиональная практика, Преддипломная практика, Научно-исследовательская практика


Пытался и стандартным split'ом, и re.split:

a = re.split(', ', str)

Он выведет:
['Численные методы', 'Высшая математика', 'дополнительные главы высшей математики', 'Дополнительные главы по численным методам', ...]

Но мне нужно что бы 'Высшая математика, дополнительные главы высшей математики' он не разделял, тк часть после запятой является частью нужной мне подстроки (определить это можно по нижнему регистру)
т.е. мне нужно сделать так, что бы строка разделялась на строки, начинающиеся на верхний регист
Как это реализовать?
  • Вопрос задан
  • 4334 просмотра
Решения вопроса 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
import re

str1 = """Высшая математика, дополнительные главы высшей математики, Численные методы, Дополнительные главы высшей математики, Дополнительные главы по численным методам, Дополнительные главы математического анализа, Теория упругости, Профессиональная практика, Преддипломная практика, Научно-исследовательская практика"""

re.findall(r'[А-Я]?[^А-Я]*', str1)

['Высшая математика, дополнительные главы высшей математики, ',
'Численные методы, ',
'Дополнительные главы высшей математики, ',
'Дополнительные главы по численным методам, ',
'Дополнительные главы математического анализа, ',
'Теория упругости, ',
'Профессиональная практика, ',
'Преддипломная практика, ',
'Научно-исследовательская практика',
'']
Ответ написан
Комментировать
@o5a
re.split(', (?=[А-Я])', s)

Если кол-во пробелов может быть больше 1, то
re.split(', +(?=[А-Я])', s)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 22:26
3500 руб./за проект
22 нояб. 2024, в 21:47
3000 руб./за проект
22 нояб. 2024, в 21:44
50000 руб./за проект