У меня есть такой текст:
Proxy='ab,cd(ef,gh),ij,kl(mn(op,kr),st),uv'
Ожидаемым результатом будет вложенный список, чтобы создать представление текста в виде дерева в виде ничтожного дерева, поэтому:
ExpectedResult=['ab','cd',['ef','gh'],'ij','kl',['mn',['op','kr'],'st'],'uv']
My попробуйте:
temp=[]
stack=[]
comma=[]
op=[]
cl=[]
n=(len(test))
for idx in range(n):
if test[idx] == ',' and not op and not cl and not comma:
stack.append(test[0:idx])
comma.append(idx)
elif test[idx] == ',' and op and not cl and not comma:
temp.append(test[op.pop()+1:idx])
comma.append(idx)
elif test[idx] == ',' and not op and cl and not comma:
if len(test[cl[0]+1:idx]) > 1:
stack.append(test[cl.pop()+1:idx])
comma.append(idx)
else:
cl.pop()
comma.append(idx)
elif test[idx] == ',' and not op and not cl and comma:
stack.append(test[comma.pop():idx])
comma.append(idx)
elif test[idx] == '(' and not op and not cl and comma:
stack.append(test[comma.pop()+1:idx])
op.append(idx)
elif test[idx] == '(' and op and not cl and comma:
temp.append(test[comma.pop()+1:idx])
op.pop()
op.append(idx)
elif test[idx] == ')' and not op and not cl and comma:
temp.append(test[comma.pop()+1:idx])
stack.append(temp)
temp=[]
cl.append(idx)
elif test[idx] == ')' and op and not cl and not comma:
temp.append([test[op.pop()+1:idx]])
cl.append(idx)
elif test[idx] == ')' and not op and not cl and comma:
temp.append(test[comma.pop()+1:idx])
stack.append(temp)
temp=[]
cl.append(idx)
Я нашел очень интересные вещи здесь
Но этот метод вернет список символов, и я хочу соединить слова (не 'a' , 'b', но 'ab'), и больше всего я не понимаю синтаксис (и, следовательно, функцию) функции pu sh.