所以我在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明确没有定义。
按照:
答案 0 :(得分:4)
我发现了这个issue number 38 - 这表示我们不能在节点名称或标签中使用特殊符号(如冒号)。它突出显示的原因是 -
与问题28一样:节点名称中冒号的问题是Graphviz 将使用它们来指定附加边的位置,它是Graphviz 神器。如果您愿意,pydot支持它们的方式是允许它们使用名称 只需在名称中添加冒号字符,只需在字符串中添加引号即可。
例如:(注意实际字符串中的双引号):
node = pydot.Node('"Testnode:###@"') print node.get_name() '"Testnode:###@"'
虽然你的名字中没有冒号可能会更好。