0

我正在尝试使用以下代码解析 GraphMl 文件

我收到以下错误

你能帮我解决这个问题吗?

4

1 回答 1

0

注意:这是我第一次遇到pygraphml

问题似乎是图形定义文件(test.graphml)中的逻辑错误。在pygraphml2.0 之上,似乎不能很好地处理此类错误:

正如所指出的,错误:TypeError: 'NoneType' object does not support item assignment,来自graphml_parser.py第114行:

e[attr.getAttribute("key")] = attr.firstChild.data

eis/应该是type 的对象pygraphml.edge.Edge,并在同一文件的第110行初始化:

e = g.add_edge_by_label(source, dest)

问题是eNone因此是错误。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(如果没有,您可以将图形文件发送给我查看)。

于 2016-01-27T18:56:39.573 回答