Pydot错误涉及解析':'字符后跟数字

时间:2015-07-20 18:31:28

标签: python python-2.7 graphviz anaconda pydot

所以我在Anaconda的python 2.7中使用了pydot,注意到当我尝试在Pydot中使用某些字符串时,我不断出错。

我已经隔离的错误:

import pydot


graph = pydot.Dot(graph_type='digraph', rankdir = 'LR')
S = 'Total Flow Count ' + ':' + str(3)
legend = pydot.Node('Legend', label=S, shape='rectangle')

graph.add_node(legend)

每当我运行它时,我得到以下输出:

Traceback (most recent call last):
  File "path\of\my\code\errorisolate.py", line 13, in <module>
    graph.write_png('example5graph.png')
  File "c:\Anaconda\lib\site-packages\pydot.py", line 1609, in <lambda>
    lambda path, f=frmt, prog=self.prog : self.write(path, format=f, prog=prog))
  File "c:\Anaconda\lib\site-packages\pydot.py", line 1703, in write
dot_fd.write(self.create(prog, format))
  File "c:\Anaconda\lib\site-packages\pydot.py", line 1803, in create
status, stderr_output) )
InvocationException: Program terminated with status: 6. stderr follows: Error: c:\users\sidharth\appdata\local\temp\tmpxvwsls:3: syntax error near line 3

context: Legend [shape=rectangle, label=Total Flow Count >>>  : <<< 3];

分析/工作到目前为止:

以某种方式结合了一个冒号字符&#39;:&#39;后跟str()格式的数字似乎引发了错误。我尝试通过附加“&#39; r&#39;因为我知道这是一种修复错误的方法,因为我知道&#39; \ n&#39;字符。但即便如此也没有运气。

的变化:

我删除了r,因为它似乎引起了一点混乱。我一直保持着:&#39;:&#39;希望仿效解决非编译换行问题的解决方案,因为pydot要求将它们列为r&#39; \ n&#39;其中r明确没有定义。

按照:

Pydot not playing well with line breaks?

1 个答案:

答案 0 :(得分:4)

我发现了这个issue number 38 - 这表示我们不能在节点名称或标签中使用特殊符号(如冒号)。它突出显示的原因是 -

  

与问题28一样:节点名称中冒号的问题是Graphviz   将使用它们来指定附加边的位置,它是Graphviz   神器。如果您愿意,pydot支持它们的方式是允许它们使用名称   只需在名称中添加冒号字符,只需在字符串中添加引号即可。

     

例如:(注意实际字符串中的双引号):

node = pydot.Node('"Testnode:###@"')

print node.get_name()
'"Testnode:###@"'

虽然你的名字中没有冒号可能会更好。