我使用graphviz绘制节点
每个节点由长字节字符串标识,如
J0b'\xee\x07\x9a\xbe\xd8\xa0\x8c@\nE\xc8\xcfwTT\x8a\x97\xad_\x9d\x0b\x85\x82\xb8\xe4, port 6\x0f\x17\xe1\xfbX'
所以创建节点看起来像这样
g.node("J0b'\xee\x07\x9a\xbe\xd8\...", label="first node")
然后我收到警告
Warning: node J0b'\xee\x07\x9a\xbe\xd8\xa0\x8c@\nE\xc8\xcfwTT\x8a\
x97\xad_\x9d\x0b\x85\x82\xb8\xe4, port 6\x0f\x17\xe1\xfbX' unrecognized
我一直试图找出错误在线的端口。奇怪的是,只有少数节点出现此错误,其他节点正确打印
所以结果节点看起来像这样
而不是"第一个节点"它打印出来" J0b' \ xee \ x07 \ x9a \ xbe \ xd8 ..."
答案 0 :(得分:2)
dot language grammar表示以下节点ID:
ID 是以下之一:
- 任何字母([a-zA-Z \ 200- \ 377])字符串,下划线 ('_')或数字([0-9]),不以数字开头;
- 数字[ - ]?(。[0-9] + | [0-9] +(。[0-9] *)?);
- 任何双引号字符串(“...”)可能包含转义引号('“)1;
- HTML字符串(< ...>)。
由于示例中的ID还包含逗号和空格等字符,因此ID应该是双引号。
例如,J0b'\xe4, port 6\x0f'
用作id时应为"J0b'\xe4, port 6\x0f'"
(带双引号)。
此外,在使用库创建图形时,必须使用库语言的正确转义序列对这些id进行转义。
因此, g.node(""J0b'\xe4, port 6\x0f'"", "label")
应该类似于g.node("\"J0b'\\xe4, port 6\\x0f'\"", "label")
。