@Roqvie

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

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

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

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


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

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
19 мар. 2024, в 11:54
3000 руб./за проект
19 мар. 2024, в 11:52
3000 руб./за проект
19 мар. 2024, в 11:49
10000 руб./за проект