读取networkx中的输入数据

时间:2013-10-17 12:01:51

标签: python file io networkx

我今天开始使用python包'networkx',我很难理解你如何从外部文件中读取输入数据。

文档中显示的示例涉及可以直接从shell中读取的小型网络。

我有一个遗留文件,用这种格式指定一个大型电网:

'from_node'  'to_node'  'edge_name'  'edge_capacity'  'flow_cost'

下一组牌上写着:

'node type' (source or sink), 'capacity', 'cost'

我想解决最大流量问题。我怎样才能读取这样的输入数据文件?

1 个答案:

答案 0 :(得分:1)

您可以使用parse_edgelist

来阅读边缘
In [1]: import networkx as nx

In [2]: lines = ["from to name capacity cost", "from1 to1 name1 capacity1 cost1"]

In [3]: G = nx.parse_edgelist(lines, data = (('name', str), ('capacity', str), ('cost', str)))

In [5]: G.edges(data=True)
Out[5]: 
[('from1', 'to1', {'capacity': 'capacity1', 'cost': 'cost1', 'name': 'name1'}),
 ('to', 'from', {'capacity': 'capacity', 'cost': 'cost', 'name': 'name'})]

对于节点,您可以只迭代文本文件并注释图形。该文档提供了许多阅读图表的方法:

http://networkx.github.io/documentation/latest/reference/readwrite.html