Python 网络错误:否<;图形>;GEXF文件中的元素

Python 网络错误:否<;图形>;GEXF文件中的元素,python,networkx,Python,Networkx,我正在尝试使用nx读取gexf文件,并出现上述错误: import networkx as nx nx.read_gexf('KwNet-Journals/KwNet-Journals.gexf') 可以找到gexf文件。NetworkX不支持该文件所在的gexf 1.3。 [5]中的:pdb 自动pdb呼叫已打开 在[6]中:nx.read_gexf(r“\KwNet Journals.gexf”) NetworkXError:GEXF文件中没有元素。 ipdb>l 688对于self.v

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

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

可以找到gexf文件。

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


[5]中的
:pdb
自动pdb呼叫已打开
在[6]中:nx.read_gexf(r“\KwNet Journals.gexf”)
NetworkXError:GEXF文件中没有元素。
ipdb>l
688对于self.versions中的版本:
689自整定版本(版本)
690 g=self.xml.find(f“{{{self.NS_GEXF}}}}图”)
691如果g不是无:
692返回自生成图(g)
-->693 raise nx.NetworkXError(“GEXF文件中没有元素”)
694
ipdb>self.NS\u GEXF
'http://www.gexf.net/1.2draft'
ipdb>q
在[7]:!标题“\KwNet Journals.gexf”
Gephi 0.9
在[10]中:nx.read\u gexf(r“\KwNet Journals.gexf”,version='1.3')
NetworkXError:未知的GEXF版本1.3。
>c:\python38\lib\site packages\networkx\readwrite\gexf.py(253)set\u version()
251 d=self.versions.get(版本)
252如果d为无:
-->253 raise nx.NetworkXError(f“未知GEXF版本{version}”)
254 self.NS_GEXF=d[“NS_GEXF”]
255 self.NS_-VIZ=d[“NS_-VIZ”]
ipdb>版本
'1.3'
ipdb>self.versions.keys()
口述键(['1.1draft','1.2draft'])

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


[5]中的
:pdb
自动pdb呼叫已打开
在[6]中:nx.read_gexf(r“\KwNet Journals.gexf”)
NetworkXError:GEXF文件中没有元素。
ipdb>l
688对于self.versions中的版本:
689自整定版本(版本)
690 g=self.xml.find(f“{{{self.NS_GEXF}}}}图”)
691如果g不是无:
692返回自生成图(g)
-->693 raise nx.NetworkXError(“GEXF文件中没有元素”)
694
ipdb>self.NS\u GEXF
'http://www.gexf.net/1.2draft'
ipdb>q
在[7]:!标题“\KwNet Journals.gexf”
Gephi 0.9
在[10]中:nx.read\u gexf(r“\KwNet Journals.gexf”,version='1.3')
NetworkXError:未知的GEXF版本1.3。
>c:\python38\lib\site packages\networkx\readwrite\gexf.py(253)set\u version()
251 d=self.versions.get(版本)
252如果d为无:
-->253 raise nx.NetworkXError(f“未知GEXF版本{version}”)
254 self.NS_GEXF=d[“NS_GEXF”]
255 self.NS_-VIZ=d[“NS_-VIZ”]
ipdb>版本
'1.3'
ipdb>self.versions.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将进行修订,以支持GEXF,例如Gephi默认使用的GEXF。

您可以将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。

感谢您的回答,有没有阅读或转换此文件以在python中使用该文件的想法?@keramat是否向NetworkX添加该版本的支持?如果您特别需要NetworkX中的图形,我看没有其他方法。@keramat您可以在文件中伪造版本以欺骗版本检查器,但由于它是该格式的另一个版本,它可能会在其他地方中断。没错,谢谢。谢谢您的回答,阅读或转换此文件以在python中使用该文件有何想法?@keramat是否将该版本的支持添加到NetworkX?如果您特别需要NetworkX中的图形,我看没有其他方法。@keramat您可以在文件中伪造版本以欺骗版本检查器,但由于它是该格式的另一个版本,它可能会在其他地方中断。没错,谢谢。