如何从Python中的JSON文件中获取特定元素?

时间:2018-04-28 10:24:01

标签: python json

我正在使用Guardian的API来获取JSON数据,现在我想要一个来自JSON数据条目的特定元素。我该怎么做?

我正在进行以下GET请求

url = 'http://content.guardianapis.com/search?from-date=2016-01-02&to-date=2016-01-02&order-by=newest&show-fields=all&page-size=1&api-key=API-KEY.

现在我想从JSON数据中获取webTitle。所以我这样做:

response = requests.get(url)
response = response.content
response = json.loads(response)
content = response['response']['results']['webTitle']

但我收到TypeError: string indices must be integers, not str错误。

但是,content = response['response']['results']正常工作。

这是一个JSON数据的spanshot。 enter image description here

4 个答案:

答案 0 :(得分:1)

response = request.get(url).json()
content = response['response']['results'][index]['webTitle']

修改

是的,因为Sudheesh Singanamalla建议,结果是一个列表,您必须访问给定的索引才能获得相应的webTitle

答案 1 :(得分:1)

当我们将列表误认为字典时,我们会收到此错误。似乎'结果'实际上是一个以字典作为第一项的列表。请执行以下操作。

content = response['response']['results'][0]['webTitle']

显然我假设你在'结果'中有一个项目。仅限列表。如果它有多个项目,则遍历列表。

答案 2 :(得分:1)

response['response']['results']为您提供了词典列表。 [{},{},...]其中每个字典在您的示例中包含以下内容:

{id:'', type:'', sectionid:'', .... }

如果您想要结果中所有webTitle的列表,则必须迭代从response['response']['results']获取的列表,并选择webTitle或其中任何其他必需的密钥结果字典。这是一个例子

webTitleList = []
# Make the request for the JSON
results = response['response']['results']
for result in results:
    webTitleList.append(result['webTitle'])
# Now the webTitleList contains the list of all the webTitles in the returned json

但是,您还可以使用webTitle上的列表理解来简化results的选择。 StackOverflow上有很多例子。

答案 3 :(得分:0)

results是一个列表。迭代它以获取所需的值。

<强>实施例

for i in response['response']['results']:
    print(i['webTitle'])