我一直在尝试做一些API查询,以便在我的DF中获得一些丢失的数据。我使用grequest库发送多个请求,并为响应对象创建一个列表。然后,我使用for循环在json中加载响应,以检索丢失的数据。我注意到的是,当使用.json()直接使用list.json()从列表中加载数据时,它可以正常工作,但是当尝试读取列表,然后将响应加载到json中时,会出现以下错误: JSONDecodeError: Expecting :第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)发布于 2021-02-27 15:26:50
一个(或多个)元素为空。
所以:
...
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是否为空字符串,而另一个则试图对每个字符串进行解码,但在异常情况下,只打印错误消息而不是退出。
https://stackoverflow.com/questions/66399871
复制相似问题