基于开括号和闭括号的逗号分隔字符串的python目录结构显示

基于开括号和闭括号的逗号分隔字符串的python目录结构显示,python,tree,hierarchy,Python,Tree,Hierarchy,我正在学习python。这也是我的第一个stackoverflow问题,正在努力格式化输出以显示我的需求。 我正在编写python代码,用于将带有逗号分隔值的字符串转换为如下所示的级别层次结构显示数据 s = "(id,cb,e(id,fn,eT(id), ln),lc)" 我想要这样的输出 -id -cb -e --id --fn --eT ---id --ln -lc 到目前为止,我已经做了一些编码,但我正在努力完善它 class parent-child():

我正在学习python。这也是我的第一个stackoverflow问题,正在努力格式化输出以显示我的需求。 我正在编写python代码,用于将带有逗号分隔值的字符串转换为如下所示的级别层次结构显示数据

s = "(id,cb,e(id,fn,eT(id), ln),lc)"
我想要这样的输出

-id
-cb
-e
  --id
  --fn
  --eT
    ---id
  --ln
-lc
到目前为止,我已经做了一些编码,但我正在努力完善它

class parent-child():
     stack = []
     def tree_recur(self,employee, level):
    s = s[s.index("(")+1:s.rindex(")")]
    ind = 0
    while(s.rstrip != null or s != ""):
            ss = s.index(",")
        words = s[ind:ss]
        parenind = words.index("(") 
        if parenind == -1:
            stack.append(level,words)
            s = s[ss+1:len(s)]
        else:
            stack.append(s[ss+1:parenind-1])
            closeparenind = s.index(")")
            ss1= s[parenind:closeparenind]
            return tree_recur(self,ss1,level+1)

    def main():
        s = "(id,created,employee(id,firstname,employeeType(id), lastname),location)"
        level = 0
        print(E = parent-child(s, level))

    main()

有人能帮我完善这个代码吗。我不知道如何根据级别的深度在字符串前打印“-”。也就是1级一连字符、2级两连字符、3级三连字符,当括号闭合时,向上移动一级。我要感谢您的帮助和花在帮助我上的时间。

因为您已经在尝试解析。更简单的方法是遍历每个字符

s = "(id,cb,e(id,fn,eT(id), ln),lc)"

hyphens = 0
result = []
current = ""

for c in s:
    if c == "(": hyphens += 1
    if c == ")": hyphens -= 1

    if c.isalnum():
        if not current:
            current += "-" * hyphens
        current += c
    elif current:
        result.append(current)
        current = ""

result = " ".join(result)

print(result)
其中打印:

-id -cb -e --id --fn --eT ---id --ln -lc
编辑:

我可以理解您希望采用这种格式:

-id
-cb
-e
  --id
  --fn
  --eT
    ---id
  --ln
-lc
这可以通过更改以下内容来实现:

current += " " * 2 * (hyphens - 1) + "-" * hyphens


请将所有代码放在代码块中谢谢您的帮助和简单的代码。感谢您介绍isalnum()。我想知道如何按级别按字母顺序排序。如何计算单词前的连字符数并按字母顺序排序。我正试着总结如何做这件事,但什么都想不出来。谢谢你的帮助和时间。
result = "\n".join(result)