Python:从非常大的JSON请求中提取特定的数据

2024-06-26 01:37:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个非常大的JSON请求中提取id和相应的名称,而我的脚本被困在终端中。我已经等了10多分钟了,什么都没有,甚至一个错误都没有。 理想情况下,我只想返回我在hand之前提供的名字列表的id。 下面是我的JSON看起来像x1000s:

{
     "results":[
         {
             "id" : "156756",
             "advertiser_id" : "taboola-demo-advertiser",
             "name" : "Demo Campaign1",
             "tracking_code" : "taboola-track",
             "cpc" : 0.25,
             "daily_cap" : 100,
             "spending_limit" : 1000,
             "spending_limit_model": "MONTHLY",
             "country_targeting": {
                 "type" : "INCLUDE",
                 "value" : ["AU", "GB"]
             } 
         },
         {
             "id" : "756862",
             "advertiser_id" : "taboola-demo-advertiser",
             "name" : "Demo Campaign2",
             "tracking_code" : "taboola-track",
             "cpc" : 0.25,
             "daily_cap" : 100,
             "spending_limit" : 1000,
             "spending_limit_model": "MONTHLY",
             "country_targeting": {
                 "type" : "INCLUDE",
                 "value" : ["AU", "GB"]
             } 
         },
         // … more results
     ]
}

以下是我迄今为止所做的,但我甚至没有机会看到它是否有效,因为我没有得到任何结果或错误:

^{pr2}$

你们能帮我解决这个问题吗?非常感谢。在

编辑:我又试了几次,这次我得到错误“Exception has occurrent:ValueError too much values to unpack(预期为2)”


Tags: nameidjsondemo错误codetrackresults
2条回答

必须迭代结果的值,该值是一个JSON数组。因此,请执行以下操作:

resp = requests.get(url=url, headers=headers) for element in resp.json().results: print (element.id, ':', element.name)

for id, name in resp.json()不是获取名为idname的项的正确方法。另外,这些项不是json响应的直接成员;它们是results列表中子项的成员。在

请尝试以下代码:

resp = requests.get(url=url, headers=headers)
data = resp.json()
for result in data['results']:
    print(result['id'], ':', result['name'])

相关问题 更多 >