Python - 读取json文件

时间:2017-02-20 16:45:31

标签: python json

我正在尝试在python中读取JSON文件并且它已成功但是会跳过一些顶级值。我正在尝试调试原因。这是代码。

data = json.load(open('pre.txt'))

for key,val in data['outputs'].items():
    print key
    print data['outputs'][key]['feat_left']

修改 这是文件的快照。我想阅读keyfeat_left了解输出

{
  "outputs": {
    "/home/113267806.jpg": {
      "feat_left": [
        2.369331121444702, 
        -1.1544183492660522
      ], 
      "feat_right": [
        2.2432730197906494, 
        -0.896904468536377
      ]
    }, 
    "/home/115061965.jpg": {
      "feat_left": [
        1.8996189832687378, 
        -1.3713303804397583
      ], 
      "feat_right": [
        1.908974051475525, 
        -1.4422794580459595
      ]
    }, 
    "/home/119306609.jpg": {
      "feat_left": [
        -0.7765399217605591, 
        -1.690917730331421
      ], 
      "feat_right": [
        -1.1964678764343262, 
        -1.9359161853790283
      ]
    }
  }
 }

P.S:感谢Rahul K P代码

4 个答案:

答案 0 :(得分:2)

不会跳过最高值。您的data ['output']对象中有45875个项目。请尝试以下代码:

len(data['outputs'].items())

您的JSON文件中确实有45875个项目。请注意,JSON对象是python中的无序集合,如dict

答案 1 :(得分:2)

我想你想要:

for key, val in data['outputs'].items():
    if 'feat_left' in val:
        print key, data['outputs'][key]['feat_left']

答案 2 :(得分:0)

如果您只想使用for循环打印文件内容,可以尝试这样:

data = json.load(open('pre.txt')
for key,val in data['outputs'].items():
      print key
      print val[0] #this will print the array and its values below "feat_left", if the json is consistent

更强大的解决方案可能如下所示:

data = json.load(open('pre.txt')
for key,val in data['outputs'].items():
      print key
      for feat_key, feat_val in val.items():
            if feat_key == 'feat_left':
                 print feat_val

代码未经测试,请尝试一下。

答案 3 :(得分:0)

试试这个:

for key, val in data['outputs'].items():
    print key, val['feat_left'] 
#output /home/119306609.jpg [-0.7765399217605591, -1.690917730331421]

这将获取'feat_left'中的每个键和元素 然后,您可以在页面中显示您喜欢的内容