Вы можете использовать регулярное выражение с отрицательным прогнозом .
import re
re.split(r'(?!name)\s+(?!is)', mystr)
Пример с большим количеством случаев:
>>> mystr = "my name is some good name is hi name"
>>> re.split(r'(?!name)\s+(?!is)', mystr)
['my', 'name is', 'some', 'good', 'name is', 'hi', 'name']
Обратите внимание, что это не будет разбивать ни одну фразу *.name is.*
. Так что «имя не» также не будет разделено. Я не уверен, каково ваше желаемое поведение в этих случаях.