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