Если исхожить из того, что предложения построены правильно (т.е. в том числе нет лишних пробелов, как в примере тут *? ";*), то не слишком мудрёно, можно сделать и так:
delimeters = ['.', ':', ';', '?', '!']
frase = 'Мама как-то сказала ему: "Жизнь прожить - не поле перейти. Сынок! Не права ли я?"; сидя одиноко у окна, он смотрел и обдумывал сказанное...'
words = frase.split()
sentences = []
prev_word = 0
for i in range(len(words)):
if words[i][-1] in delimeters:
sent = ' '.join(words[prev_word:i+1])
sentences.append(sent)
prev_word = i+1
#Мама как-то сказала ему:
#"Жизнь прожить - не поле перейти.
#Сынок!
#Не права ли я?";
#сидя одиноко у окна, он смотрел и обдумывал сказанное...
Но надо конечно же смотреть по задаче, и добавлять в delimeters ещё элементы. Так, к примеру, для прямой речи возможна конструкция "бла-бла", - сказал он. Её бы тоже разбить на два предложения, но данный код этого не сделает. Так что это скорее идея, в каком направлении думать, а допиливать ещё нужно, исходя из текстов.