在Python请求数据中包含列表
我正在使用Requests库向Pipeline Deals API发送数据,要求在请求的中以列表的形式提供一个值。
他们的示例是:"custom_label_83": [ 28, 29 ]
。
这是我发送数据的方式:
requests.put("https://www.pipelinedeals.com/...", data={'custom_label_83': [28,29]})
问题似乎出在,当我发送这个示例时,最后只发送了29
,因为请求的主体(经过编码后)是这样的:
custom_label_83%5D=28&custom_fields%5D%5Bcustom_label_83%5D=29
结果是这个字段被设置了两次,最后的结果变成了29
,而不是包含28
和29
的列表。我希望PUT
请求的主体能像这样:
custom_label_83%5D=28,29
我该怎么做呢?
2 个回答
0
如果你想把28和29放在一起,你需要在需要的列表中把它们组合起来。你可以用字符串、嵌套列表、嵌套元组等等方式来实现。
"custom_label_83": [ '28,29' ] #string example
"custom_label_83": [ [28,29] ] #nested list example
"custom_label_83": [ (28,29) ] #nested tuple example
4
你遇到的这种情况(多个GET参数)是因为在使用requests
时,默认的行为是当你把一个列表作为参数字典中的某个键的值传入时,它会这样处理。
如果你想要输出结果是custom_label_83%5D=28,29
,你需要把列表中的值连接起来:
>>> ','.join(map(str, [28, 29]))
'28,29'