Python请求API时为字典键设多值报错,寻求技术协助
解决"cannot specify a field more than once"错误
问题出在你传递多值参数的方式上:当你给字典里的indcode赋值元组(10,23,81)时,requests库会自动把它拆成多个indcode参数拼到URL里,变成indcode=10&indcode=23&indcode=81,而这个Socrata平台的API不允许同一个字段重复出现。
要解决这个问题,得用该API支持的多值查询语法——$in操作符,格式是indcode=$in=(值1,值2,值3)。
修正后的代码:
import requests URL = "https://data.colorado.gov/resource/cjkq-q9ih.json" params = { "area": 57, "indcode": "$in=(10,23,81)" } document = requests.get(URL, params=params) print(document.request.url)
如果需要更灵活地处理动态生成的代码列表,可以用字符串拼接的方式:
import requests URL = "https://data.colorado.gov/resource/cjkq-q9ih.json" ind_codes = [10,23,81] params = { "area": 57, "indcode": f"$in=({','.join(map(str, ind_codes))})" } document = requests.get(URL, params=params) print(document.request.url)
这样URL里的参数会变成indcode=$in=(10,23,81),符合API的查询规则,就不会触发重复字段的错误了。
内容的提问来源于stack exchange,提问作者Lion Dale
相关产品推荐
相关产品推荐

