如果json请求为“none”,则继续“for”

2024-04-16 18:54:29 发布

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

我正在通过一个API请求下载json。你知道吗

问题是,其中一些请求不返回任何内容(none),然后出现错误消息,循环停止。你知道吗

错误信息如下:

raise JSONDecodeError("Expecting value", s, err.value) from None

JSONDecodeError: Expecting value

下面是一个小例子:

pessoa_file = open('pessoa_file.txt', 'a', encoding='utf-8')
for x in range(n_pessoas):

    pessoa = jsonresponse['Pessoa'][x]

    response_pessoa = requests.get(pessoa)

    pessoa_data = json.loads(response_pessoa.text)

    pessoa_file.write(pessoa_data)

我想知道如何忽略错误或写点什么。 我不太熟悉python,但我知道R。我认为它应该是try()tryCatch()之类的东西


Tags: noneapijson消息内容datavalueresponse
2条回答

有两种方法可以解决这个问题。第一种方法是检查试图调用json.loads的值是否为None,如下所示:

if response_pessoa.text is not None:
    pessoa_data = json.loads(response_pessoa.text)
    pessoa_file.write(pessoa_data)

或者您可以将代码的该部分包装在try/except块中,如下所示:

try:
    pessoa_data = json.loads(response_pessoa.text)
    pessoa_file.write(pessoa_data)
except JSONDecodeError:
    continue

如果您想避免尝试,除非您可以尝试此方法(如果我有正确的变量):

response_pessoa.text 
if response_pessoa.text  == None
   continue
   # or something else and continue processing

有时我认为最好在尝试块之前处理一个可以处理的问题,但这是编程风格的个人问题 并编写代码来处理获取None值的问题。你知道吗

相关问题 更多 >