2017-05-02 116 views
0

我想確定每個attribut JSON格式,我不知道JSON文件的內容。蟒蛇確定json屬性

,比如我有這些不同的文件contenent:

[ 
{ 
    "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確定attribut名字?

+0

它看起來像你的JSON由'dict'值的'list'組成。你可以先遍歷'list',然後運行'dict.item()'中的鍵值,來遍歷'dict'值。 'key'將包含您正在查找的JSON密鑰。 –

回答

1

使用json包解析文件。然後,您可以查看數據結構中第一項的鍵。

import json 

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

print(data[0].keys()) 
+0

而如果我得到封閉例如attributs: [ { 「geo_shape」:{ \t \t \t \t 「類型」: 「點」, \t \t \t \t 「座標」: \t \t \t \t \t 1.437119162465912 , \t \t \t \t \t 43.63540081010507 \t \t \t \t] \t \t \t}, 「NOM」: 「LA VACHE」 } ] –

+0

在這種情況下'數據[0] [ 'geo_shape']鍵()'。你只需要索引到列表/字典結構,直到達到適當的級別。如果遍歷條目以獲得某個級別的所有密鑰,則可以使用'set'對象來獲取唯一密鑰。 –

0
data = """[ 
{ 
    "name": "abc", 
    "hobby": "swimming" 
}, 
{ 
    "name": "xyz", 
    "hobby": "programming" 
} 
]""" 

import json 
d = json.loads(data) # here I am loading from the string, but you can load from a json file by using json.load() instead of json.loads() 

# iterate through the list of dicts and print the keys for each dict 
for _ in d: 
    print _.keys() 

這將導致:

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

您需要檢查的字典鍵,在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)) 

但每個解決方案會以某種方式與內容相關反正。

-2

這就是你如何得到屬性名稱。如果你想要的值,打印價值而不是關鍵。

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 
+0

我希望你沒有4000個對象... –

+0

然後刪除第一個循環.. ?? –