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

Есть задание, в котором сказано что даётся кортеж с ФИО, но там нету пробелов. Надо поставить пробел перед каждой заглавной буквой(кроме первой). Сам смог сделать только такой Код:

import re

i = 0
с = ['АлександровДенисПетрович']
while i < len(c):
    s = c[i]
    s = re.sub(r' *([ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ]) *', r' \1 ', s)  # оставляет ровно по одному пробелу до/после
    c[i] = s[1:]
    i+=1

print(c)

Но к сожалению пробелы ставятся и после заглавной буквы.

['А лександров Д енис П етрович']

Как поставить пробелы только перед ЗАГЛАВНЫМИ буквами?


Ответы (2 шт):

Автор решения: Константин Комиссаров

Вариант решения без регулярок и без перечисления букв. У строк есть метод isupper, которым можно проверить относится ли буква к верхнему регистру:

name = 'АлександровДенисПетрович'


result = name[0]
for letter in name[1:]:
    if letter.isupper():
        result += f' {letter}'
    else:
        result += letter

print(result)
→ Ссылка
Автор решения: Victor VosMottor thanks Monica

В качестве прикола:

s = 'АлександровДенисПетрович'

print(''.join(s[j]if j not in[i for i in range(len(s))if s[i]!=s.lower()[i]] else ' '+s[j]for j in range(len(s))).lstrip())
→ Ссылка