У меня есть строка, которая выглядит следующим образом:
'(a (b (c d e f)) g)'
Я хочу превратить ее в такой вложенный список:
['a', ['b', ['c', 'd', 'e', 'f']], 'g']
Я использовал эту функцию:
def tree_to_list(text, left=r'[(]', right=r'[)]', sep=r','):
pat = r'({}|{}|{})'.format(left, right, sep)
tokens = re.split(pat, text)
stack = [[]]
for x in tokens:
if not x or re.match(sep, x): continue
if re.match(left, x):
stack[-1].append([])
stack.append(stack[-1][-1])
elif re.match(right, x):
stack.pop()
if not stack:
raise ValueError('error: opening bracket is missing')
else:
stack[-1].append(x)
if len(stack) > 1:
print(stack)
raise ValueError('error: closing bracket is missing')
return stack.pop()
Но результат не тот, который я ожидал. Между строками нет запятых:
['a', ['b', ['c' 'd' 'e' 'f']], 'g']
Не могли бы вы помочь мне с этим