将networkx图导出为json图形文件的方法?

3
我有一个跟进问题需要澄清:Method to save networkx graph to json graph?。但是,Stack Overflow不允许我向 Sirus 的答案添加评论,所以这里是我的问题。
“最佳方法是什么,可以将JSON数据写入文本文件呢?” 我试图进行明显的步骤:将由NetworkX生成的json_graph写入文件,以便我可以将其读入D3.js。 我可以轻松将其打印到控制台,因此我可以验证它是否能够创建适当的JSON数据。 但是,我的尝试未能将其保存到文件中,并且(通常情况下)Python 文档基本上毫无价值。 这是我尝试过的:
with open('networkdata1.json', 'w') as outfile1:
    outfile1.write(json_graph.node_link_data(G))

我运行代码时出现了错误:“TypeError:expected a character buffer object”,如果我使用简单的字符串而不是JSON图形运行相同的代码,则可以完美地工作。问题出在将JSON对象转换为文本上,我不知道如何做到这一点,并且找不到包括此步骤的示例。一旦你知道了它,我相信它很简单,但如果你不懂Python,从在线材料中弄清这些东西确实很难。
最好的方法是将JSON数据写入文本文件中。如果这是正确的方法,还可能有什么其他问题导致这个问题?
2个回答

5

Jamie已经走在了正确的道路上,而NetworkX页面上也有部分答案,将它们结合起来就可以得到一个可行的解决方案:

with open('networkdata1.json', 'w') as outfile1:
    outfile1.write(json.dumps(json_graph.node_link_data(G)))

需要翻译的内容:

事实证明,需要将图形转换为json图形,然后将json转储到文本中,最后将该文本写入文本文件。显然,他们应该在文档中更明显地包含这一步骤,但希望下一个走上这条道路的人能够快速轻松地找到这个简单的解决方案。

确保您已经导入了import jsonimport networkx as nx,以使此代码段正常运行(尽管后者似乎实际上没有出现在此代码片段中)。


-1

你可能需要先将json转储为文本。在大多数json库中,可以使用方法.dumps(object)来完成此操作。

with open('networkdata1.json', 'w') as outfile1:
    outfile1.write(json_graph.dumps(G))

相反地,将文本读取为 json 通常使用 .loads(text_data)


谢谢您的回答,但是 json_graph " 'module' object has no attribute 'dumps' ."。 NetworkX构建了一个特殊的json图形对象,目的就是为了做我想做的事情,但是没有记录如何完成这一步骤。我相信解决方案将是针对NetworkX json对象的特定解决方案。 - Aaron Bramson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接