JSONDecodeError在python中使用for循环时



我一直在尝试做一些API查询,以在我的DF中获得一些缺失的数据。我使用grequest库发送多个请求并为响应对象创建列表。然后我使用for循环来加载json中的响应以检索丢失的数据。我注意到的是,当使用。json()从列表中直接使用通知列表[0].json()加载数据时,它工作得很好,但是当试图读取列表然后将响应加载到json中时,这个错误出现了:JSONDecodeError:期望值:第1行第1列(char 0)

下面是我的代码:

import requests 
import json
import grequests
ls = []
for i in null_data['name']:
url = 'https://pokeapi.co/api/v2/pokemon/' + i.lower()
ls.append(url)
rs  = (grequests.get(u) for u in ls)
s = grequests.map(rs)
#This line works
print(s[0].json()['weight']/10)
for x in s:
#This one fails
js = x.json()
peso = js['weight']/10
null_data.loc[null_data['name'] == i.capitalize(), 'weight_kg'] = peso
<ipython-input-21-9f404bc56f66> in <module>
13 
14 for x in s:
---> 15     js = x.json()
16     peso = js['weight']/10
17     null_data.loc[null_data['name'] == i.capitalize(), 'weight_kg'] = peso
JSONDecodeError: Expecting value: line 1 column 1 (char 0)

一个(或多个)元素为空。

:

...
for x in s:
if x != ""
js = x.json()
peso = js['weight']/10
null_data.loc[null_data['name'] == i.capitalize(), 'weight_kg'] = peso
...

...
for x in s:
try:
js = x.json()
peso = js['weight']/10
null_data.loc[null_data['name'] == i.capitalize(), 'weight_kg'] = peso
except json.JSONDecodeError as ex: print("Failed to decode(%s)"%ex)
...

第一个检查x是否为空字符串,而另一个尝试解码每个字符串,但在出现异常时只打印错误消息而不是退出。

最新更新