передача строки в split() с экранированием её части

Есть необходимость работать именно с питоном 3.5, посему форматирую строку с параметрами и дальше мне нужно её разбить на части

name1 = Alex
name2 = Jhon
string = "First user name is {} and second user name is {}".format(name1, name2)
string.split()

всё хорошо пока name1 и name2 состоят из одного слова, когда это не так эти слова тоже разбиваются, а мне нужно их экранировать от этого. Разделитель именно пробел, т.е. string.split() остаётся как был. В итоге если name1 = Alex Smith, то он и должен как 1 объект оставаться после сплита:

... 'name' 'is' 'Alex Smith' ...


Ответы (1 шт):

Автор решения: Vestalt

Я бы предложил использовать временный разделитель:

name1 = 'Alex Black'
name2 = 'Jhon'
tempDelimiter = '#56'

string = "First user name is {} and second user name is {}"
string = string.replace(' ', tempDelimiter).format(name1, name2)

result = string.split(tempDelimiter)
print(result)

['First', 'user', 'name', 'is', 'Alex Black', 'and', 'second', 'user', 'name', 'is', 'Jhon']

tempDelimiter можно и другой записать, в зависимости от содержимого строки.

Думаю, этот способ проще, чем вставка в итоговый список.

→ Ссылка