Попробуйте разделить взгляд назад:
sentences = re.split('(?<=[\.\?\!])\s*', x)
print(sentences)
['This is an example sentence.', 'I want to include punctuation!',
'What is wrong with my code?', 'It makes me want to yell, "PLEASE HELP ME!"']
Этот трюк с регулярным выражением работает путем разделения, когда мы видим символ пунктуации сразу за нами. В этом случае мы также сопоставляем и потребляем любой пропущенный пробел перед тем, как мы продолжим вводную строку.
Вот моя посредственная попытка справиться с проблемой двойной кавычки:
x = 'This is an example sentence. I want to include punctuation! "What is wrong with my code?" It makes me want to yell, "PLEASE HELP ME!"'
sentences = re.split('((?<=[.?!]")|((?<=[.?!])(?!")))\s*', x)
print filter(None, sentences)
['This is an example sentence.', 'I want to include punctuation!',
'"What is wrong with my code?"', 'It makes me want to yell, "PLEASE HELP ME!"']
Обратите внимание, что он правильно разбивает четные предложения, заканчивающиеся двойными кавычками.