Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python确定json属性_Python - Fatal编程技术网

python确定json属性

python确定json属性,python,Python,我想确定JSON格式中的每个属性,我不知道JSON文件的内容 例如,我有以下不同的文件内容: [ { "name": "abc", "hobby": "swimming" }, { "name": "xyz", "hobby": "programming" } ] 第二个例子: [ { "street": "PL EDOUARD BOUILLIERE", "nb_places_totales": 249 }, { "street": "C

我想确定JSON格式中的每个属性,我不知道JSON文件的内容

例如,我有以下不同的文件内容:

[
{
    "name": "abc",
    "hobby": "swimming"
},
{
    "name": "xyz",
    "hobby": "programming"
}
]
第二个例子:

[
{
    "street": "PL EDOUARD BOUILLIERE",
    "nb_places_totales": 249
},
{
    "street": "CHE DU VERDON",
    "nb_places_totales": 212
}
]

如何使用python解析和确定属性名?

使用json包解析文件。然后可以查看数据结构中第一项的键

import json

with open(filename) as fid:
    data = json.load(fid)

print(data[0].keys())
这将导致:

[u'hobby', u'name']
[u'hobby', u'name']

您需要在python3中检查字典键:

import json

a = json.loads("""
[{"name": "abc", "hobby": "swimming" },
{"name": "xyz", "hobby": "programming"}]
""")

b = json.loads("""
[{"street": "PL EDOUARD BOUILLIERE", "nb_places_totales": 249},
{"street": "CHE DU VERDON", "nb_places_totales": 212 }]
""")

print(*(i.keys() for i in a))
print(*(i.keys() for i in b))

但无论如何,每个解决方案都会在某种程度上依赖于内容。

这就是获取属性名称的方式。如果需要值,请打印值而不是键

import json
import sys

obj1 = [
{
    "name": "abc",
    "hobby": "swimming"
},
{
    "man": "xyz",
    "hobby": "programming"
}
]

obj2 = [
{
    "street": "PL EDOUARD BOUILLIERE",
    "nb_places_totales": 249
},
{
    "street": "CHE DU VERDON",
    "nb_places_totales": 212
}
]

print "Obj1 Attributes"
for i in range(0, len(obj1)):
    for key, value in obj1[i].items():
        print key


print "Obj2 Attributes"
for j in range(0, len(obj2)):
    for key, value in obj2[i].items():
        print key

您的JSON似乎由
列表
dict
值组成。您可以先迭代
列表
,然后运行dict.item()中的键、值的
来迭代
dict
值。
将包含您正在查找的JSON键。上面应该是
.items()
而不是
.item()
。。。也就是说:
对于键,dict.items()中的值:
然后删除第一个循环..?如果我得到封闭的属性,例如:[{“geo_形状”:{“type”:“Point”,“coordinates”:[1.437119162465912,43.63540081010507],“nom”:“lavache”},在这种情况下,
数据[0]['geo_形状].keys()
。您只需要索引到list/dict结构中,直到达到适当的级别。如果在条目上循环以获取特定级别的所有关键点,则可以使用
set
对象来获取唯一的关键点。
import json
import sys

obj1 = [
{
    "name": "abc",
    "hobby": "swimming"
},
{
    "man": "xyz",
    "hobby": "programming"
}
]

obj2 = [
{
    "street": "PL EDOUARD BOUILLIERE",
    "nb_places_totales": 249
},
{
    "street": "CHE DU VERDON",
    "nb_places_totales": 212
}
]

print "Obj1 Attributes"
for i in range(0, len(obj1)):
    for key, value in obj1[i].items():
        print key


print "Obj2 Attributes"
for j in range(0, len(obj2)):
    for key, value in obj2[i].items():
        print key