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)
Это максимум что я смог. Напишите, пожалуйста, как правильно. (и распишите так как у меня, по другому не понимаю)
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)