我正在将 python 中的 anytree 库用于我正在处理的一个项目,该项目利用了该库的树功能。我希望能够在树中搜索,但文档中显示的搜索命令不起作用。
这是直接来自此处找到的文档的示例树:https ://anytree.readthedocs.io/en/latest/api/anytree.search.html#anytree.search.findall 。
>>> from anytree import Node, RenderTree, AsciiStyle
>>> f = Node("f")
>>> b = Node("b", parent=f)
>>> a = Node("a", parent=b)
>>> d = Node("d", parent=b)
>>> c = Node("c", parent=d)
>>> e = Node("e", parent=d)
>>> g = Node("g", parent=f)
>>> i = Node("i", parent=g)
>>> h = Node("h", parent=i)
>>> print(RenderTree(f, style=AsciiStyle()).by_attr())
f
|-- b
| |-- a
| +-- d
| |-- c
| +-- e
+-- g
+-- i
+-- h
>>> findall(f, filter_=lambda node: node.name in ("a", "b"))
(Node('/f/b'), Node('/f/b/a'))
>>> findall(f, filter_=lambda node: d in node.path)
(Node('/f/b/d'), Node('/f/b/d/c'), Node('/f/b/d/e'))
当我在 IDLE 中复制这个确切的代码时,我最终得到了这个错误:
>>> from anytree import Node, RenderTree, AsciiStyle
>>> f = Node("f")
>>> b = Node("b", parent=f)
>>> a = Node("a", parent=b)
>>> d = Node("d", parent=b)
>>> c = Node("c", parent=d)
>>> e = Node("e", parent=d)
>>> g = Node("g", parent=f)
>>> i = Node("i", parent=g)
>>> h = Node("h", parent=i)
>>> findall(f, filter_=lambda node: node.name in ("a", "b"))
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
findall(f, filter_=lambda node: node.name in ("a", "b"))
NameError: name 'findall' is not defined
请让我知道我是否需要导入其他内容,或者是否有任何其他方法可以使用 anytree 搜索树。