Как указать детское в anytree и распечатать дерево - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь распечатать дерево, используя разделы Википедии, но не могу понять, как указать дочерний узел в anytree. Вот что я попробовал до сих пор,

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

Я хочу, чтобы это было как можно глубже

1 Ответ

1 голос
/ 13 марта 2019

Я думаю, вам нужно дважды проверить документы и проработать пример или два в классе 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...