首页 > 解决方案 > Python - 在已经有花括号 '{ }' 的 JSON 字符串上使用 .format()

问题描述

我在我的 POST 请求中发送一个 multipart/form-data 正文。请求中已经有大括号,所以我不确定如何在此字符串上使用 .format() 并将现有括号保留为字符串的一部分('{' 位于索引 104 和 '}' 位于索引 146在下面的有效载荷中

例如,如何将以下动态内容插入到有效负载中?{DATE}、{BATCH_NAME}、{FILE_NAME}、{PERSON_NAME_1} 等。

payload = "--CHEESE\r\nContent-Disposition: form-data; name=\"criteria\"\r\nContent-Type: application/json\r\n\r\n{\r\n    \"process_date\": \"{DATE}\"\r\n}\r\n--CHEESE\r\nContent-Disposition: form-data; name=\"{BATCH_NAME}\"; filename=\"{FILE_NAME.txt}\"\r\nContent-Type: text/plain\r\n{FULL_NAME PERSON_1}\r\n{FULL_NAME_PERSON_2}\r\n{FULL_NAME_PERSON_3}\r\n--CHEESE--\r\n"

我试过的

我尝试将有效负载分解为更小的字符串部分,然后在插入内容后将它们连接在一起,但这很麻烦。

有没有更好的办法?

标签: python-requests

解决方案


解决方案是在字符串中存在单括号的情况下使用双括号' {{ }} '。

像这样:

payload = "--CHEESE\r\nContent-Disposition: form-data; name=\"criteria\"\r\nContent-Type: application/json\r\n\r\n{{\r\n    \"process_date\": \"{}\"\r\n}}\r\n--CHEESE\r\nContent-Disposition: form-data; name=\"{}\"; filename=\"{FILE_NAME.txt}\"\r\nContent-Type: text/plain\r\n{FULL_NAME_PERSON_1}\r\n{FULL_NAME_PERSON_2}\r\n{FULL_NAME_PERSON_3}\r\n--CHEESE--\r\n".format(DATE,BATCH_NAME,FULL_NAME_PERSON_1,FULL_NAME_PERSON_2)

推荐阅读