从GML文件中提取数据

3 投票
1 回答
23970 浏览
提问于 2025-04-17 15:17

我有一个GML(图建模语言)文件,我想从中创建一个ID和标签的对应关系。但是我不知道该怎么做,因为我对列表的操作似乎不太管用。我试过一个例子,那个例子说明了如何使用两个分隔符,但在我的文件上却不奏效。

有人能帮我一下吗?

这个GML文件的结构如下:

graph [
  node [
    id 0
    label "24"
  ]
  node [
    id 1
    label "25"
  ]
  node [
    id 2
    label "26"
  ]
  node [
    id 3
    label "27"
  ]
  node [
    id 4
    label "20"
  ]
  node [
    id 5
    label "21"
  ]
(... some more nodes)
  edge [
    source 0
    target 75
    weight 4
  ]
  edge [
    source 0
    target 68
    weight 2
  ]
(many more edges)
]

我想提取每个节点块中的数据,并创建一个节点ID和节点标签的对应关系。比如,第一个节点的对应关系是0->24,依此类推。我不太关心边的信息。

提前谢谢大家的帮助。

1 个回答

10

如果你会用NetworkX这个Python库,你可以这样读取文件(t.gml就是你的文件),然后得到映射关系。

In [1]: import networkx as nx

In [2]: G = nx.read_gml('t.gml')

In [3]: G.node
Out[3]: 
{0: {'id': 0, 'label': u'24'},
 1: {'id': 1, 'label': u'25'},
 2: {'id': 2, 'label': u'26'},
 3: {'id': 3, 'label': u'27'},
 4: {'id': 4, 'label': u'20'},
 5: {'id': 5, 'label': u'21'}}

比如说:

In [4]: G.node[0]['label']
Out[4]: u'24'

撰写回答