我正在尝试使用以下代码解析 GraphMl 文件
我收到以下错误。
你能帮我解决这个问题吗?
注意:这是我第一次遇到pygraphml。
问题似乎是图形定义文件(test.graphml)中的逻辑错误。在pygraphml2.0 之上,似乎不能很好地处理此类错误:
正如所指出的,错误:TypeError: 'NoneType' object does not support item assignment
,来自graphml_parser.py第114行:
e[attr.getAttribute("key")] = attr.firstChild.data
e
is/应该是type 的对象pygraphml.edge.Edge
,并在同一文件的第110行初始化:
e = g.add_edge_by_label(source, dest)
问题是e
,None
因此是错误。g
(实例化e
)是类型的对象pygraphml.graph.Graph
。转到graph.py,在第147add_edge_by_label
行定义:
def add_edge_by_label(self, label1, label2):
"""
"""
n1 = None
n2 = None
for n in self._nodes:
if n['label'] == label1:
n1 = n
if n['label'] == label2:
n2 = n
if n1 and n2:
return self.add_edge(n1, n2)
else:
return
因此,您正在执行最后一条return
语句,这意味着在test.graphml中,您(至少)有一条边有一个标签(或者可能两者都有),它不属于任何图形节点。
显然pygraphml存在问题(我认为这是一个错误),如果Graph.add_edge_by_label
可以返回None
,则None
应该执行测试GraphMLParser.parse
(可能也在其他地方)。
HTH(如果没有,您可以将图形文件发送给我查看)。