如何在python 2.7

时间:2017-08-11 17:09:26

标签: python json python-2.7

我正在尝试从json文件中的键中提取值。它的类型是dict,但是在测试存在的密钥之后不是提取内容,而是仅获得{'name_of_key': <type 'dict'>}。如何成功提取实际内容呢?我的代码是:

    with open("a.json", 'r') as infile, open("b.json", 'w') as outfile:
        key = "name_of_key"

            for key in infile:
            value = {"name_of_key": dict} 
                if key is not None:
                    outfile.write(str(value))

json文件看起来像这样,我想在“name_of_key”后提取所有内容:

{
    "_links": {
        "self": {
            "href": "/linkxxx"
        }
    },
    "metadata": {
        "name_of_key": {
            "key": {
                "key3s": "eighteen"
            },
            "key": "company",
            "modelItems": {
                "key1": "1",
                "key2": "2",
                "key0": "0"

            }
        },
        "contentType": "type_of_media"
    }
}

1 个答案:

答案 0 :(得分:1)

您的代码中存在多个问题。

使用json模块

Python标准库附带了一个名为json的模块,它可以帮助您将JSON文本解析为Python对象,并将Python对象序列化为JSON。它的Python 2.7版文档是here。具体来说,请查看函数json.loadjson.dump

这一行中的dict是什么?

其次,我不明白你的意图是什么:

mydictionary = {"name_of_key": dict}

在Python中,dict()是用于创建字典的构造函数(您可以看到它如何在examples in the documenation中使用)。

如果您打算使用dict()构建字典,则应该向其传递一些参数。

如果您打算使用dict作为变量名称(但其定义在哪里?),请不要这样做,因为该定义会隐藏全局定义的dict名称。

您获得<type 'dict'>

的原因

dict是一个类名。如果启动Python解释器并执行此操作,您也会获得<type 'dict'>

>>> print dict
<type 'dict'>

此处dict不是字典,而是用于创建字典的构造函数。

打印实际的dictonary值:

>>> a = dict([('one', 1), ('two', 2)])
>>> print a
{'two': 2, 'one': 1}

或更简单地说,就像这样,它是相同的:

>>> a = {'one': 1, 'two': 2}
>>> print a
{'two': 2, 'one': 1}

如何提取内部词典

import json

def extract_metadata(input_filename, output_filename, wanted_key):
    with open(input_filename, 'r') as infile:
        data = json.load(infile)

    with open(output_filename, 'w') as outfile:
        json.dump(data['metadata'][wanted_key], outfile)

extract_metadata('a.json', 'b.json', 'name_of_key')