2014-12-18 3 views
1

Я пытаюсь разделить что-то вроде следующей строкиPython: Разделить строку, уважайте скобки

s = '1 2 3 {test 0, test 0} {test 0 test 0}' 

, что я пытаюсь получить это

['1', '2', '3', '{test 0, test 0}', '{test 0, test 0}'] 

или

['1', '2', '3', 'test 0, test 0', 'test 0, test 0'] 

Не могли бы вы помочь мне?

Благодаря

ответ

3
\s(?![^{]*}) 

Split по this.See демо.

https://regex101.com/r/vN3sH3/4

re.split(r"\s(?![^{]*})",s) 

Или

print re.split(r"\s(?![^{]*})|{|}",s) 

Если вы не хотите {}, а также.

Объяснение: \ S space

(?![^{]*}) отрицательный предпросмотр о том, после того, как пространство не должно быть }, который имеет не { перед ним.

Так этот путь {test 0 test 0} пространство после 0 не будет рассматриваться, как это имеет } впереди wihtout {.

+1

Подумайте о том, чтобы добавить объяснение выбранного вами регулярного выражения. Конечно, мы можем искать это самостоятельно, но это сделает ваш ответ более точным :) – Rerito

+0

Ваш второй вариант не работает – jamylak

+0

@vks затем добавьте это к вашему решению или его неправильному – jamylak

Смежные вопросы