NetworkXError:GEXF文件中没有<graph>元素

2024-09-29 23:22:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用nx读取gexf文件,并出现上述错误:

import networkx as nx
nx.read_gexf('KwNet-Journals/KwNet-Journals.gexf')

gexf文件可以在here中找到


Tags: 文件importnetworkxreadhereas错误nx
2条回答

您可以将GEXF文件的头替换为与GEXF版本1.2相关的名称空间描述。也就是说,删除

<gexf xmlns="http://www.gexf.net/1.3" version="1.3" 
xmlns:viz="http://www.gexf.net/1.3/viz" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.gexf.net/1.3 http://www.gexf.net/1.3/gexf.xsd">

并插入

<gexf version="1.2" xmlns="http://www.gexf.net/1.2draft" 
xmlns:viz="http://www.gexf.net/1.2/viz" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.gexf.net/1.2draft 
http://www.gexf.net/1.2draft/gexf.xsd">

理想情况下,NetworkX将进行修订,以支持Gephi默认使用的GEXF

NetworkX不支持该文件所在的GEXF 1.3。


In [5]: pdb
Automatic pdb calling has been turned ON

In [6]: nx.read_gexf(r"<...>\KwNet-Journals.gexf")
<...>
NetworkXError: No <graph> element in GEXF file.
<...>

ipdb> l
    688         for version in self.versions:
    689             self.set_version(version)
    690             g = self.xml.find(f"{{{self.NS_GEXF}}}graph")
    691             if g is not None:
    692                 return self.make_graph(g)
 > 693         raise nx.NetworkXError("No <graph> element in GEXF file.")
    694
<...>

ipdb> self.NS_GEXF
'http://www.gexf.net/1.2draft'

ipdb> q

In [7]: ! head "<...>\KwNet-Journals.gexf"
<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.3" version="1.3" xmlns:viz="http://www.gexf.net/1.3/viz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.3 http://www.gexf.net/1.3/gexf.xsd">
  <meta lastmodifieddate="2020-02-07">
    <creator>Gephi 0.9</creator>
    <description></description>
  </meta>
  <graph defaultedgetype="undirected" timeformat="double" timerepresentation="timestamp" mode="dynamic">
<...>


In [10]: nx.read_gexf(r"<...>\KwNet-Journals.gexf", version='1.3')

NetworkXError: Unknown GEXF version 1.3.
> c:\python38\lib\site-packages\networkx\readwrite\gexf.py(253)set_version()
    251         d = self.versions.get(version)
    252         if d is None:
 > 253             raise nx.NetworkXError(f"Unknown GEXF version {version}.")
    254         self.NS_GEXF = d["NS_GEXF"]
    255         self.NS_VIZ = d["NS_VIZ"]

ipdb> version
'1.3'

ipdb> self.versions.keys()
dict_keys(['1.1draft', '1.2draft'])

相关问题 更多 >

    热门问题