我使用的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
中元素的数量,这样我就可以设置一个循环来从每个中提取数据元件。
答案 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)
几个指针:
results
的长度来迭代它。您可以使用for result in z['results']
。list
从0
开始。enumerate
。