首页 > 解决方案 > 使用 Networkx 将特定 Pajek (NET) 文件读取到 Jupyter 时出现解析错误

问题描述

我正在尝试在 Google Colab 的 Jupyter 版本中读取此 pajek 文件,并且在执行以下非常简单的代码时出现错误:

J = nx.MultiDiGraph()
J=nx.read_pajek("/content/data/graphdatasets/jazz.net")
print(nx.info(J))

错误如下:

/usr/local/lib/python3.6/dist-packages/networkx/readwrite/pajek.py in parse_pajek(lines)
    211                 except AttributeError:
    212                     splitline = shlex.split(str(l))
--> 213                 id, label = splitline[0:2]
    214                 labels.append(label)
    215                 G.add_node(label)

ValueError: not enough values to unpack (expected 2, got 1)

使用pip show networkx,我看到我正在运行 Networkx 版本:2.3。我在代码中做错了吗?

更新:粘贴在文件的前几行下方:

*Vertices     198
*Arcs
*Edges
       1       8        1
       1      24        1
       1      35        1
       1      42        1
       1      46        1
       1      60        1
       1      74        1
       1      78        1

标签: python-3.xjupyternetworkxgraph-theorygoogle-colaboratory

解决方案


根据Pajek 定义,文件的前两行不符合标准。之后*vertices n,预计有 n 行包含有关顶点的详细信息。此外,*edgesand*arcs是重复的。NetworkX假设使用以*arcsaMultiDiGraph*edgesa开头的边列表MultiGraph(参见当前代码)。要解决您的问题,您只需删除.net-file 的前两行。


推荐阅读