在python中

时间:2017-04-09 17:08:58

标签: string parsing tree

我有一个真正的问题。我需要解析一个字符串输入示例:(((10)40((25)30(35)))50((70(80(40)))60))

是的,这是树的代码。我需要做一些检查以找到具体的 节点,但现在我只是想为这棵树构建目录或列表。 然后我可以自己管理支票。我想。

从中获得可行的输出。 最好的情况会是像这样的目录: {(零点50),(1:40,60)...}

甚至只是简单地将正确的整数附加到某个列表中 是可行的。

我已经尝试了几个小时来编写类似的东西,但我总是卡住。 我最好的选择是这段代码: def parsing_input(string_brackets):

def parsing_input(string_brackets):

stack=[]
counter = -1
for character in string_brackets:
    if character == '(':
        counter += 1
        stack.append('')
    elif character==')':
        counter -= 1
    else:
        stack[counter] += character
return stack

带输出:

[' 50',' 4060',' 103070',' 253580',' 40',& #39;','','','','']

但是这不起作用,我的整数可能是不同的大小所以我不能将它们分开。我也不喜欢那些空字符串。他们可能会减慢速度 码。老实说,我已经尝试了几个小时。

编辑:忘了说我不允许使用外部库。我知道有些库可以轻松完成,但我不能使用它们。

1 个答案:

答案 0 :(得分:0)

使用代码中的当前表单,您应该能够通过在减去之前附加逗号来添加分隔。至于删除空桶,您可以在第二次运行堆栈时执行此操作。此外,在第二次运行时,您可以构建您想要的目录作为第二个变量。

dlmalloc