2014-02-20 2 views
1

data.json 내가 모두 key/pair 값을 표시 할 수 있어요구문 분석 JSON 데이터

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

입니다. 내 코드는 다음과 같습니다

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

하지만이 같은 모든 quotesu없이 단지 keys를 표시하려면 :

#! /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"]) 

나에게주는

bar1, bar2, bar3, bar4 

아무도 아무것도 제안 할 수 있습니까? 그것은 파이썬으로 만 존재할 필요는 없으며 쉘 스크립트에도있을 수 있습니다.

답변

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

'keys'를 사용할 필요가 없습니다. – thefourtheye

+0

'keys '가 필요 없습니다. – user227666

0

data["d"][0]["e"]은 dict을 반환합니다.

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

,이

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

같은 목록에 join을 더 간단 k 포장 : python2에서,이 같은 뭔가가 딕셔너리의 열쇠를 얻을이 사용할 수 dict의 키를 반복합니다.

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

@thefourtheye에게 감사드립니다.

+0

'키'를 사용할 필요가 없습니다. – thefourtheye

1

이 개체의 키는 unicode 문자열 클래스의 인스턴스입니다. 이 경우 열쇠 인 dict 인스턴스의 기본 인쇄 동작은 게시물에 표시 될 때 인쇄됩니다. 문자열 (__repr__ 및/또는 __str__)로 그 내용을 표현하는 dict 구현이 당신에게 dict에 상주 무엇 객체를 보여주기 위해 노력하기 때문에

가 아니라 무엇을의 모습 그 개체의 문자열 표현입니다.
print ", ".join(data["d"][0]["e"]) 

당신은을 사용하여이를 달성 할 수

:

In [86]: print u'hi' 
hi 

In [87]: x = u'hi' 

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

In [89]: print x 

hi 

이 쉼표로 구분 된 unicode으로 함께 키를 인쇄하는 것은 괜찮 가정, 당신을 위해 작동합니다 : 이것은 예를 들어 중요한 차이입니다 keys 회원 기능은 dict에서도 가능하지만 꼭 필요한 것은 아닙니다.