循环格式化请求负载

时间:2021-01-14 13:37:10

标签: python json request format

我试图通过执行 12 次相同的请求来循环 API 请求:

这是请求的有效载荷部分,这是有效的:

    payload="{\n\t\"filter\": {\n        \"year\":2020,\n        \"month\":10,\n\t\t\"customer_id\":52\n\t},\n    \"sort\":{\"_id.date\":1}\n}"

我的目标是通过在月后添加循环变量“mes”来格式化有效负载字符串。据我所知,我尝试使用:

for mes in range(0,12):
      payload="{\n\t\"filter\": {\n        \"year\":2020,\n        \"month\": 
     {mes},\n\t\t\"customer_id\":52\n\t},\n    \"sort\":{\"_id.date\":1}\n}".format(mes=mes)

但是不起作用,我如何格式化它以便我可以遍历有效负载? 有什么解决办法?

谢谢

1 个答案:

答案 0 :(得分:1)

当您使用 .format() 时,您不能在 str 中包含 {},因为它们将被识别为将 str 放入 .format() 的位置。在不打算使用格式化 str 的地方,您需要将它们中的每一个都加倍:

for mes in range(0,12):
      payload="{{\n\t\"filter\": {{\n        \"year\":2020,\n        \"month\"{mes},\n\t\t\"customer_id\":52\n\t}},\n    \"sort\":{{\"_id.date\":1}}\n}}".format(mes=mes)

简而言之,'{a} {something else}'.format(a=1) 不起作用,但 '{a} {{something else}}'.format(a=1) 起作用并被打印为 '1 {something else}'