Python - 在提取数据之前计算JSON元素

时间:2015-07-03 10:15:14

标签: python json

我使用的API为我提供了一个结构如下的JSON文件:

{
offset: 0,
results: [
{
  source_link: "http://www.example.com/1",
  source_link/_title: "Title example 1",
  source_link/_source: "/1",
  source_link/_text: "Title example 1"
},
{
  source_link: "http://www.example.com/2",
  source_link/_title: "Title example 2",
  source_link/_source: "/2",
  source_link/_text: "Title example 2"
},
...

我在Python中使用这段代码来提取我需要的数据:

import json
import urllib2

u = urllib2.urlopen('myapiurl')
z = json.load(u)
u.close
link = z['results'][1]['source_link']
title = z['results'][1]['source_link/_title']

问题是要使用它我必须知道从中提取数据的元素的数量。我的results每次都可以有不同的长度,所以我想要做的是先计算results中元素的数量,这样我就可以设置一个循环来从每个中提取数据元件。

5 个答案:

答案 0 :(得分:14)

检查结果键的长度:

len(z["results"])

但如果你只是绕过它们,for循环是完美的:

for result in x["results"]:
    print(result["source_link"])

答案 1 :(得分:3)

你不需要知道结果的长度,你可以使用for循环:

for result in z['results']:
    # process the results here

无论如何,如果你想知道'结果'的长度:len(z.results)

答案 2 :(得分:2)

如果您想获得长度,可以尝试:

len(z['result'])

但是在python中,我们通常做的是:

for i in z['result']:
    # do whatever you like with `i`

希望这有帮助。

答案 3 :(得分:1)

你不需要或者可能不想计算它们以便循环它们,你可以这样做:

import json
import urllib2

u = urllib2.urlopen('myapiurl')
z = json.load(u)
u.close
for result in z['results']:
    link = result['source_link']
    title = result['source_link/_title']
    # do something with link/title

或者你可以这样做:

u = urllib2.urlopen('myapiurl')
z = json.load(u)
u.close
link = [result['source_link'] for result in z['results']]
title = [result['source_link/_title'] for result in z['results']]
# do something with links/titles lists

答案 4 :(得分:1)

几个指针:

  1. 无需知道results的长度来迭代它。您可以使用for result in z['results']
  2. list0开始。
  3. 如果您确实需要索引,请查看enumerate