2017-04-09 88 views
0

我有一个真正的问题。我需要解析一个字符串输入的例子:(((10)40((25)30(35)))50((70(80(40)))60))在python中解析括号内的字符串(整数)

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

并从此得到可行的输出。 最好的情况会是这样的,像这样的目录: {(0: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', '','','','','']

但这不起作用,我的整数可能是不同的大小,所以我不能将它们分开。我也不喜欢那些空弦。他们可能会减慢 的代码。我真的一直在努力几个小时。

编辑:忘了说我不允许使用外部库。我知道一些图书馆可以很容易地做到这一点,但我无法使用它们。

回答

0

使用当前表单中的代码,您应该能够通过在扣除之前附加逗号来添加分隔符。至于删除空桶,你可以通过你的栈进行第二次运行。另外,在第二次运行中,您可以建立您想要的目录作为第二个变量。

def parsing_input(string_brackets): 

stack=[] 
counter = -1 
for character in string_brackets: 
    if character == '(': 
     counter += 1 
     stack.append('') 
    elif character==')': 
     if len(stack[counter]) > 0 and stack[counter][-1:] != ',': 
      stack[counter] += ',' 
     counter -= 1 
    else: 
     stack[counter] += character 
return stack 
+0

我试过我的代码,我设法创建了一个深度目录,但是我意识到对于我的检查,我需要知道树的结构即。每个孩子的父母。与我目前的输入序列,我不知道什么来自哪里。我需要一个不同的输入序列代码 –