我的data.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中,也可以在shell脚本中。
答案 0 :(得分: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
成员函数来实现此目的,但这并非绝对必要。
答案 1 :(得分:0)
data["d"][0]["e"]
返回一个字典。在python2中,您可以使用它来获取该dict的键,如下所示:
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指出这一点。
答案 2 :(得分:0)
print ', '.join((data["d"][0]["e"].keys()))