如何在anytree和prin中指定children

2024-04-27 15:03:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图打印一棵树使用维基百科的节,但我无法找出如何指定子节点在任何树。我已经试过了

import wikipediaapi
from anytree import Node, RenderTree, DoubleStyle
wiki_wiki = wikipediaapi.Wikipedia('en')
main_page = wiki_wiki.page('Stack_Overflow')
sections =  main_page.sections
print(RenderTree(sections))

但我有个错误

Traceback (most recent call last):
  File "so.py", line 6, in <module>
    print(RenderTree(sections))
  File "/usr/lib/python3.4/site-packages/anytree/render.py", line 292, in __str__
    lines = ["%s%r" % (pre, node) for pre, _, node in self]
  File "/usr/lib/python3.4/site-packages/anytree/render.py", line 292, in <listcomp>
    lines = ["%s%r" % (pre, node) for pre, _, node in self]
  File "/usr/lib/python3.4/site-packages/anytree/render.py", line 272, in __next
    children = node.children
AttributeError: 'list' object has no attribute 'children'

我期待这个结果

1   History
1.1 Content criteria
1.2 User suspension
2   Statistics
3   Technology
4   Reception
5   See also
6   References
7   External links

我想让它越深越好


Tags: inpynodelibpackagesusrwikiline
1条回答
网友
1楼 · 发布于 2024-04-27 15:03:51

我认为您需要仔细检查docs,并在anytree类中完成一两个示例。这个类使用它自己定义的树结构,但是sections是一个简单的列表,不适合呈现给RenderTree。我用一些简单的print命令检查了您的接口:

sections =  main_page.sections
print(type(sections), len(sections))
print("\n       sections      -\n", sections)
render = RenderTree(sections)
print(type(render))
print("\n       final print      -\n")
print(render)
print("\n       final print done      -\n")

输出:

<class 'list'> 7

       sections      -
 [Section: History (1):
The website was created
...
]
<class 'anytree.render.RenderTree'>

       final print      -

Traceback (most recent call last):
...

您的列表输入没有Node所期望的anytree结构。你知道吗

相关问题 更多 >