Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

........ Ученик (190), на голосовании 2 дня назад
Дан текст. Первую букву в каждом предложении сделать заглавной.
Это максимум что я смог. Напишите, пожалуйста, как правильно. (и распишите так как у меня, по другому не понимаю)

a=' atvr hgyf jj. lub ggf go! lku?'
a=a.strip().capitalize()
print(a)
s=''
for i in a:
if i=='.' or i=='!' or i=='?':
s=s+i
else:
s=s+i
print(s)
Голосование за лучший ответ
Хлебушек Оракул (76321) 1 месяц назад
 text = ' atvr hgyf jj. lub ggf go! lku?'  
text_cap = [t.capitalize() for t in text.split()]
print(*text_cap)
Кирилл Стрикель Профи (739) 1 месяц назад
 a='atvr hgyf jj. lub ggf go! lku?'  
a=a.strip().capitalize()
print(a)
s=''
u = 1
for i in a:
if i=='.' or i=='!' or i=='?':
s=s+i
u = 1
elif u == 0 or i == ' ':
s=s+i
else:
i = i.upper()
u = 0
s=s+i
print(s)
Андрей Высший разум (457231) 1 месяц назад
 a = ' atvr hgyf jj. lub ggf go! lku?'
a = ['.'] + a.strip().split() # разрезаем на массив слов и добавляем в начало массива слово '.'
for i in range(1, len(a)): # начинаем с индекса 1 (слова исходного текста)
if a[i - 1][-1] in '.!?': # если предыдущее слово оканчивается на '.', '!', '?'
a[i] = a[i].capitalize() # первую букву текущего слова приводим к верхнему регистру
print(*a[1:])

А вот так это можно сделать регулярными выражениями вообще никак не меняя другие символы строки:
 import re
a = ' atvr hgyf jj. lub ggf go! lku?'
a = re.sub(r'(^\s*|[.!?]\s*)(\w)', lambda s: s[1] + s[2].upper(), a)
print(a)
Похожие вопросы