Anytree Dict Nodes to Picture (png) - PullRequest
0 голосов
/ 06 марта 2019

Я работаю с любым модулем дерева python.Я сохранил Dict в каждом узле дерева и хочу преобразовать это дерево в изображение, когда я делаю это, у меня появляется какая-то ошибка.

Дерево:

{'man': False, 'goat': False, 'lion': False, 'grass': False, 'state': True}
├── {'man': True, 'goat': False, 'lion': False, 'grass': False, 'state': False}
├── {'man': True, 'goat': False, 'lion': True, 'grass': False, 'state': False}
├── {'man': True, 'goat': True, 'lion': False, 'grass': False, 'state': True}
│   ├── {'man': False, 'goat': True, 'lion': False, 'grass': False, 'state': True}
│   │   ├── {'man': True, 'goat': True, 'lion': False, 'grass': False, 'state': 'repeat'}
│   │   ├── {'man': True, 'goat': True, 'lion': True, 'grass': False, 'state': True}
│   │   │   ├── {'man': False, 'goat': True, 'lion': True, 'grass': False, 'state': False}
│   │   │   ├── {'man': False, 'goat': True, 'lion': False, 'grass': False, 'state': 'repeat'}
│   │   │   └── {'man': False, 'goat': False, 'lion': True, 'grass': False, 'state': True}
│   │   │       ├── {'man': True, 'goat': False, 'lion': True, 'grass': False, 'state': False}
│   │   │       ├── {'man': True, 'goat': True, 'lion': True, 'grass': False, 'state': 'repeat'}
│   │   │       └── {'man': True, 'goat': False, 'lion': True, 'grass': True, 'state': True}
│   │   │           ├── {'man': False, 'goat': False, 'lion': True, 'grass': True, 'state': True}
│   │   │           │   ├── {'man': True, 'goat': False, 'lion': True, 'grass': True, 'state': 'repeat'}
│   │   │           │   └── {'man': True, 'goat': True, 'lion': True, 'grass': True, 'state': 'Goal'}
│   │   │           ├── {'man': False, 'goat': False, 'lion': False, 'grass': True, 'state': 'repeat'}
│   │   │           └── {'man': False, 'goat': False, 'lion': True, 'grass': False, 'state': 'repeat'}
│   │   └── {'man': True, 'goat': True, 'lion': False, 'grass': True, 'state': True}
│   │       ├── {'man': False, 'goat': True, 'lion': False, 'grass': True, 'state': False}
│   │       ├── {'man': False, 'goat': False, 'lion': False, 'grass': True, 'state': True}
│   │       │   ├── {'man': True, 'goat': False, 'lion': False, 'grass': True, 'state': False}
│   │       │   ├── {'man': True, 'goat': False, 'lion': True, 'grass': True, 'state': 'repeat'}
│   │       │   └── {'man': True, 'goat': True, 'lion': False, 'grass': True, 'state': 'repeat'}
│   │       └── {'man': False, 'goat': True, 'lion': False, 'grass': False, 'state': 'repeat'}
│   └── {'man': False, 'goat': False, 'lion': False, 'grass': False, 'state': 'repeat'}
└── {'man': True, 'goat': False, 'lion': False, 'grass': True, 'state': False}

Преобразование в Png:

DotExporter(udo).to_dotfile('udo.dot')

from graphviz import Source
Source.from_file('udo.dot')

Ошибка:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-23-1a4e66c099be> in <module>()
----> 1 DotExporter(udo).to_dotfile('udo.dot')
      2 
      3 from graphviz import Source
      4 Source.from_file('udo.dot')

/opt/conda/lib/python3.6/site-packages/anytree/exporter/dotexporter.py in to_dotfile(self, filename)
    212         """
    213         with codecs.open(filename, "w", "utf-8") as file:
--> 214             for line in self:
    215                 file.write("%s\n" % line)
    216 

/opt/conda/lib/python3.6/site-packages/anytree/exporter/dotexporter.py in __iter(self, indent, nodenamefunc, nodeattrfunc, edgeattrfunc, edgetypefunc)
    158         for option in self.__iter_options(indent):
    159             yield option
--> 160         for node in self.__iter_nodes(indent, nodenamefunc, nodeattrfunc):
    161             yield node
    162         for edge in self.__iter_edges(indent, nodenamefunc, edgeattrfunc, edgetypefunc):

/opt/conda/lib/python3.6/site-packages/anytree/exporter/dotexporter.py in __iter_nodes(self, indent, nodenamefunc, nodeattrfunc)
    175             nodeattr = nodeattrfunc(node)
    176             nodeattr = " [%s]" % nodeattr if nodeattr is not None else ""
--> 177             yield '%s"%s"%s;' % (indent, DotExporter.esc(nodename), nodeattr)
    178 
    179     def __iter_edges(self, indent, nodenamefunc, edgeattrfunc, edgetypefunc):

/opt/conda/lib/python3.6/site-packages/anytree/exporter/dotexporter.py in esc(str)
    240     def esc(str):
    241         """Escape Strings."""
--> 242         return str.replace("\"", "\\\"")

AttributeError: 'dict' object has no attribute 'replace'

Я прочитал всю документацию по любому дереву, но ничего не нашел в их, и я также попробовал Google, но не нашел ничего полезного.Так как очень мало работы сделано на любом дереве.так как я могу преобразовать мое дерево диктов в картинку, пожалуйста, предложите мне что-нибудь.

...