python目录结构显示逗号分隔的字符串基于开放和封闭的括号
问题描述:
我正在学习python。这也是我的第一个*问题,并在格式化输出以显示我的需求方面苦苦挣扎。 我正在写一个Python代码,用于将逗号分隔值的字符串转换为级别层次结构,如下所示显示数据。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
和
result = "\n".join(result)
请把你所有的代码的代码块 – jtmingus