2014-02-20 2 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} 

Но я хочу, чтобы отобразить только keys без quotes и u, как это:

bar1, bar2, bar3, bar4 

Кто-нибудь может предложить что-нибудь? Это может быть не только в python, но и в скрипте оболочки.

ответ

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

Не нужно использовать 'keys'. – thefourtheye

+0

нет необходимости в ключах – user227666

0

data["d"][0]["e"] возвращает a dict. В python2, Вы можете использовать это, чтобы получить ключи от этой Dict с чем-то вроде этого:

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

В Python3, обертывают k в списке, как этот

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

Даже проще, join будет перебирать ключи от dict.

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

Благодаря @thefourtheye для указания этого.

+0

Не нужно использовать «ключи». – 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 тоже, но это не обязательно.