.
(wildcard) and ?
(zero or one, quantifier) are special regex characters, you need to escape them to use them literally.
However, in your case it would be much simpler to use a character class (inside which these characters aren't special anymore):
split(r'[!.?] ')
A character class [...]
stands for "one character, any of the ones included inside the character class".