Вы используете
op, param, *val = statement.split()
, который разделяется на пробелы - строка
edit "CTS SVR" '
поместит '-edit'
в op
, '"CTS'
в param
и остаток строки (разделенный пробелами в виде списка) в val
: ['SVR"']
.
Вам нужноспособ Разделить строку пробелами, сохраняя подстроки в кавычках - если у вас есть параметры, которые внутренне разделены пробелами и разделены кавычками.
Вдохновленный этим ответом модуль CSV дает вам то, что вам нужно:
t1 = 'edit1 "some text" bla bla'
t2 = 'edit2 "some text"'
t3 = 'edit3 some thing'
import csv
reader = csv.reader([t1,t2,t3], delimiter = " ", skipinitialspace = True)
for row in reader:
op, param, *remainder = row
print(op,param,remainder, sep = " --> ")
Вывод:
edit1 --> some text --> ['bla', 'bla']
edit2 --> some text --> []
edit3 --> some --> ['thing']
Вы можете применить ридертолько на одну строку (reader = csv.reader([line], delimiter = " ")
).
Возможно, дубликат Разделить строку на пробелы, сохраняя подстроки в кавычках - Я ранее проголосовал по этому вопросу и больше не могу голосовать за дубликат- отсюда и подробный ответ.