parse_graphml#

parse_graphml(graphml_string, node_type=<class 'str'>, edge_key_type=<class 'int'>, force_multigraph=False)[source]#

从字符串读取 GraphML 格式的图。

参数:
graphml_stringstring

包含 graphml 信息的字符串(例如,graphml 文件的内容)。

node_type: Python 类型 (默认: str)

将节点 id 转换为此类型

edge_key_type: Python 类型 (默认: int)

将 graphml 边 id 转换为此类型。多重图使用 id 作为边键。非多重图将其添加到边属性字典中,名称为“id”。

force_multigraphbool (默认: False)

如果为 True,返回带有边键的多重图。如果为 False(默认),则当图中存在多重边时返回多重图。

返回:
graph: NetworkX 图

如果没有找到平行边,则返回 Graph 或 DiGraph。否则返回 MultiGraph 或 MultiDiGraph。

注意事项

默认的节点和边属性不会传播到每个节点和边。它们可以从 G.graph 中获取,如果需要,可以使用类似如下的方法应用于节点和边属性

>>> default_color = G.graph["node_default"]["color"]  
>>> for node, data in G.nodes(data=True):  
...     if "color" not in data:
...         data["color"] = default_color
>>> default_color = G.graph["edge_default"]["color"]  
>>> for u, v, data in G.edges(data=True):  
...     if "color" not in data:
...         data["color"] = default_color

此实现不支持混合图(有向边和无向边同时存在)、超图、嵌套图或端口。

对于多重图,将使用 GraphML 边的“id”作为边键。如果未指定,则使用“key”属性。如果没有“key”属性,将提供默认的 NetworkX 多重图边键。

示例

>>> G = nx.path_graph(4)
>>> linefeed = chr(10)  # linefeed = 
>>> s = linefeed.join(nx.generate_graphml(G))
>>> H = nx.parse_graphml(s)