【发布时间】:2025-12-19 13:05:07
【问题描述】:
我正在调用一个需要动态变量作为参数的 API。但是,当字符串被三引号和反斜杠转义字符包围在字符串文字的开头时,我不知道如何格式化字符串以包含变量。
我尝试过改变引号的数量并使用“.format()”函数。
这里的代码以一种获得成功结果的方式格式化:
payload = "{\n\t\"firm\": \"myfirm\",\n\t\"id\": \"f87987562\",\n\t\"data\": {\n\t\t\"tracking_preference\": 2\n\t} \n}\n"
这是我尝试以更简洁的方式格式化字符串,同时还包括变量:
payload = \
"""{
"firm": {0},
"id": {1},
"data": {
"tracking_preference": {2}
}
}
""".format('myfirm', "f87987562", 2)
这是我收到的错误:
19 }
20 }
---> 21 """.format('myfirm', "f87987562", 2)
22
23 apikey = "secret_key"
KeyError: '\n "firm"'
我怀疑它与反斜杠有关,但它的实现似乎是必要的。非常感谢任何有关此字符串格式背后直觉的帮助和见解。
我正在尝试将字符串文字传递给请求函数:
response = requests.request("POST", url, data=payload, headers=headers)
【问题讨论】:
-
How can I print literal curly-brace characters in python string and also use .format on it? 的可能重复项。试试
payload = \ """{{ "firm": {0}, "id": {1}, "data": {{ "tracking_preference": {2} }} }} """.format('myfirm', "f87987562", 2) -
问题不在于反斜杠,问题在于
format正在查看大括号内的所有内容,即字符串中的所有内容。为什么不使用普通的dict稍后再转换?