如何基于列表值筛选requests响应并解决参数传递ValueError报错
报错原因
你传入的params参数结构不符合requests的要求,你写的(("model", [my_list]))本质是单个二元元组,requests解析params时会尝试迭代每个元素拆为「参数名、参数值」的键值对,迭代这个二元元组时会直接拿到第一个元素"model",无法拆为两个值,就触发了该报错。同时你还额外给my_list套了一层列表,就算结构正确传参内容也不符合预期。
解决方案
根据后端接口的参数接收规则,两种最常用的实现方式如下:
方式1:同参数名传多值(对应请求参数格式:model=1&model=2&model=3)
绝大多数接口会支持这种传参格式,直接给params的对应键传列表即可:
import requests my_list = [1, 2, 3, 4, 5] url = 'https://w3schools.com/python/demopage.php' resp = requests.get(url, params={"model": my_list}) print(resp.text)
方式2:单参数传逗号分隔值(对应请求参数格式:model=1,2,3,4,5)
如果后端要求多个值用逗号拼接为单个字符串,把列表转成拼接字符串即可:
import requests my_list = [1, 2, 3, 4, 5] url = 'https://w3schools.com/python/demopage.php' resp = requests.get(url, params={"model": ','.join(map(str, my_list))}) print(resp.text)
内容的提问来源于stack exchange,提问作者Al-Andalus
相关产品推荐
相关产品推荐

