gpt4 book ai didi

python - 从预期的文本字符串构建树

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

我有一个代表 django 中简单树的节点的模型:

class Node(models.Model):
name = models.CharField('Name')
parent = models.ForeignKey('self', blank=True, null=True, related_name='children')

我有一个文档,由树结构组成,带有选项卡,如下所示:

Level1.1
Level2.1
Level2.2
Level3
Level1.2

当我解析此文档时,我有以下字符串:

'Level1.1\n\tLevel2.1\n\tLevel2.2\n\t\tLevel3\nLevel1.2'

如何有效地解析该字符串并创建节点?结果应该是:

Node(name='Level1.1'), Node(name='Level2.1', parent=Node(previous node)) etc.

提前致谢!

最佳答案

使用堆栈来跟踪父节点。

document = 'Level1.1\n\tLevel2.1\n\tLevel2.2\n\t\tLevel3\nLevel1.2'

stack = [] # keep track of ancestors ([0] - root, ..., [-1] - parent)
for line in x.splitlines():
name = line.strip()
level = line.count('\t')
while len(stack) > level:
stack.pop()
node = Node(name=name, parent=stack[-1] if stack else None)
node.save()
stack.append(node)

关于python - 从预期的文本字符串构建树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36030597/

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