2014-02-20 59 views
1

data.json解析JSON數據

{"a":[{"b":{"c":{ "foo1":1, "foo2":2, "foo3":3, "foo4":4}}}],"d":[{"e":{"bar1":1, "bar2":2, "bar3":3, "bar4":4}}]} 

我能同時列出key/pair值。我的代碼是:

#! /usr/bin/python 
import json 
from pprint import pprint 

with open('data2.json') as data_file:  
    data = json.load(data_file) 
pprint(data["d"][0]["e"]) 

這給了我:

{u'bar1': 1, u'bar2': 2, u'bar3': 3, u'bar4': 4} 

但我只想沒有任何像這樣的quotesu顯示keys

bar1, bar2, bar3, bar4 

任何人都可以提出什麼嗎?它不一定只在Python中,也可以在shell腳本中。

回答

0
print ', '.join((data["d"][0]["e"].keys())) 
+0

不需要使用'keys'。 – thefourtheye

+0

不需要'鑰匙' – user227666

0

data["d"][0]["e"]返回字典。在python2,您可以使用它來獲取字典的鍵像這樣的東西:

k = data["d"][0]["e"].keys() 
print(", ".join(k)) 

在python3,包裹k在列表中這樣

k = list(data["d"][0]["e"].keys()) 
print(", ".join(k)) 

就更簡單了,join將迭代字典的鍵。

print(", ".join(data["d"][0]["e"])) 

感謝@thefourtheye指出了這一點。

+0

不需要使用'keys'。 – thefourtheye

1

該對象的鍵是unicode字符串類的實例。鑑於此,作爲密鑰的dict實例的默認打印行爲將在您的帖子中顯示時打印出來。

這是因爲dict執行代表它的內容作爲一個字符串(__repr__和/或__str__)的旨在向您展示居住在dict什麼對象的,而不是那些對象樣子的字符串表示。這是一個重要的區別,例如:

In [86]: print u'hi' 
hi 

In [87]: x = u'hi' 

In [88]: x 
Out[88]: u'hi' 

In [89]: print x 

hi 

這應該爲你工作,假設打印鍵一起作爲一個逗號分隔unicode是好的:

print ", ".join(data["d"][0]["e"]) 

您可以使用達到這個keys成員函數dict也是如此,但並非嚴格必要。