gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:16 24 4
gpt4 key购买 nike

我正在学习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

result = "\n".join(result)

关于python 基于左括号和右括号的逗号分隔字符串的目录结构显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43529420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com