如何解决NetworkXError:GEXF 文件中没有 <graph> 元素
我正在尝试使用 nx 读取 gexf 文件并得到上述错误:
import networkx as nx
nx.read_gexf('KwNet-Journals/KwNet-Journals.gexf')
可以在 here 中找到 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'])
,
您可能可以通过使用与 GEXF 1.2 版相关的命名空间描述替换 GEXF 文件的标题来摆脱困境。即删除
<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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。