【问题标题】:Method to export networkx graph to json graph file?将networkx图导出到json图文件的方法?
【发布时间】:2015-08-21 16:56:22
【问题描述】:

我对@9​​87654321@ 有一个后续问题,但 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:期望一个字符缓冲区对象”如果我使用简单的字符串而不是 json 图运行相同的代码,那么它可以完美地工作。问题在于将 json 对象转换为文本,我不知道该怎么做,也找不到包含此步骤的任何示例。我敢肯定,一旦你知道它就很简单,但如果你不了解 Python,那么很难从网上提供的材料中弄清楚这些东西。

将 JSON 数据写入文本文件的最佳方式是什么?如果这是正确的方法,还有什么可能导致此问题?

【问题讨论】:

    标签: python json networkx


    【解决方案1】:

    Jamie 走在了正确的轨道上,部分答案也在 NetworkX 页面上,将它们结合起来创建了一个可行的解决方案:

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

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

    确保您拥有import jsonimport networkx as nx 才能使其正常工作(尽管后者似乎实际上并未出现在此代码 sn-p 中)。

    【讨论】:

      【解决方案2】:

      您可能需要先将 json 转储为文本。在大多数json 库中,这是通过.dumps(object) 方法完成的。

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

      相反,读入json 通常是.loads(text_data)

      【讨论】:

      • 感谢您的回答,但 json_graph " 'module' 对象没有属性 'dumps' 。" NetworkX 构建了一个特殊的 json 图形对象,目的是明确地做我想做的事,但没有记录如何做这一步。我相信解决方案将特定于 NetworkX json 对象。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多