python - 如果数据在列表中,如何过滤请求中的数据?
问题描述
我有一个名为 sampleId 的列表sampleid_list
,现在我想做一个请求,如果 SampleId 出现在sampleid_list
这是我的代码:
import requests
sampleid_list = [592785, 592787, 592789, 592790, 592791, 592795, 592796]
headers = {'Authorization': 'Bearer ' + token}
proxies = {'https': 'proxy.services.dekra.com:8080'}
url1 = 'https://**-**-***.***.com/odata/Results'
params_1 = (
('$filter','SampleId in ', sampleid_list),
('$select', 'ResultId, CompletedOn, EnteredValue, EnteredOn, TextValue\n'),
('$count', 'true'),
('$expand', 'Test($expand=Sample($select=SampleId)), Test($expand=TestType($select=Name)), Test($select=SpecificationStatus), ResultType($select=Name), Unit($select=Name)\n'),
)
response_1 = requests.get(url1, headers=headers, proxies=proxies, params=params_1)
r1 = response_1.json()
print(r1)
现在让事情变得困难的SampleId
不是在基本 url 中/Results
而是从/Sample
我当前的输出:
Traceback (most recent call last):
File "c:/data/GORGE/Desktop/VSprojects/EnergyZero/EnergyZero_API.py", line 156, in <module>
response_1 = requests.get(url1, headers=headers, proxies=proxies, params=params_1)
File "C:\ProgramData\Anaconda3\lib\site-packages\requests\api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\requests\sessions.py", line 516, in request
prep = self.prepare_request(req)
File "C:\ProgramData\Anaconda3\lib\site-packages\requests\sessions.py", line 459, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "C:\ProgramData\Anaconda3\lib\site-packages\requests\models.py", line 314, in prepare
self.prepare_url(url, params)
File "C:\ProgramData\Anaconda3\lib\site-packages\requests\models.py", line 432, in prepare_url
enc_params = self._encode_params(params)
File "C:\ProgramData\Anaconda3\lib\site-packages\requests\models.py", line 97, in _encode_params
for k, vs in to_key_val_list(data):
ValueError: too many values to unpack (expected 2)
解决方案
你的错误:
params
应该是一个dict
或一个list
元组。每个元组应该包含 2 个元素 (key,val) 但是params_1
是一个tuple
元组并且你有超过 2 个元素。
错误演示(第三个请求将抛出您在代码中得到的异常)
import requests
url = 'https://w3schools.com/python/demopage.php'
x = requests.get(url, params = {"model": "Mustang"})
print(x.status_code)
y = requests.get(url, params = [("model", "Mustang")])
print(y.status_code)
bug = requests.get(url, params = (("model", "Mustang","bug")))
print(bug)
推荐阅读
- sqlite - 颤振选择返回空sqlite
- python - 使用 SVM 作为图像分类器的精度/F 分数是否有望达到 10%?
- c# - 从 LLBLGen 创建静态扩展方法的 Moq
- opengl - OpenGL 如何能够在所有架构和 GPU 上工作?
- c# - 如何从 List.EntitySet 中删除所有
- mapbox-gl-js - Mapbox GL v.0.54:根据点击更改图标图像
- perl - 如何在 Perl 中忽略格式错误的 JSON 字符串
- c# - IUserIdProvider 中缺少 SignalR JWT 声明。JWT 不记名 OnMessageReceived 未触发
- php - 在 wordpress 的投资组合页面上显示所有类别时出错
- javascript - scrollIntoView() 不将节点滚动到树的顶部