Вы можете использовать следующее регулярное выражение, чтобы разделить эту строку (пункт Очень последнего списка была бы пустая строка.):
import re
s = "index (1.0000000e+00 2.0000000e+00 3.0000000e+00) _x_ (error error error) t (1.2500000e+02 1.2500000e+02 1.2500000e+02) "
re.split("\s*?(?:\(|\))\s*", s)
Это приводит к:
['index', '1.0000000e+00 2.0000000e+00 3.0000000e+00', '_x_', 'error error error', 't', '1.2500000e+02 1.2500000e+02 1.2500000e+02', '']
Кроме того, вы можете использовать после регулярного выражения, чтобы извлечь компоненты вашей строки, а затем обработать их (например, полоса пробела из подстроки). Это регулярное выражение предполагает, что строка имеет сбалансированные левый/правый скобки:
re.findall("(?:(?<=\()[^)]*?(?=\))|[a-z_]+)",s)
Она должна обеспечить следующий вывод:
['index', ' 1.0000000e+00 2.0000000e+00 3.0000000e+00', '_x_', ' error error error ', 't', ' 1.2500000e+02 1.2500000e+02 1.2500000e+02 ']
Regex является инструментом для сопоставления моделей, здесь нет каких-либо шаблон - просто строку, которую вы хотите разбить, поэтому Regex не является подходящим инструментом для задания - используйте разделение строк. – alfasin
@alfasin Получил это. Спасибо, что указали это. – Anand
'str.split' ожидает символ или последовательность, поэтому вам придется отфильтровывать скобки вручную позже и обрабатывать возможные варианты пробелов до/после них. Я думаю, что 're' подходит. –