Как объединить строки в Python, используя формат? - PullRequest
0 голосов
/ 01 июня 2018

Я хочу отправить динамические данные в моей полезной нагрузке,

payload = "{\r\n \"name\": \"{0}\",\r\n \"id\":\"{1}\"}".format(1,2)
*** KeyError: '\r\n "name"'

Но когда я пытаюсь добавить статическое значение, все работает нормально:

payload = "{\r\n \"name\": \"just\",\r\n \"id\":\"32\"}"

КакМогу ли я добавить к нему динамические данные?

Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 01 июня 2018

Вместо манипулирования JSON в строке используйте модуль JSON.

Пример:

import json
payload = {"name": '',"id":''}
payload["name"] = 1
payload["id"] = 2

payload = json.dumps(payload)
print( payload )
print( type(payload) )

Вывод:

{"name": 1, "id": 2}
<type 'str'>
0 голосов
/ 01 июня 2018

Ваша проблема в том, что когда вы используете format(), символ фигурной скобки является особым (из-за {0}) и его необходимо экранировать, удваивая фигурную фигурную скобку:

>>> payload = "{{\r\n \"name\": \"{0}\",\r\n \"id\":\"{1}\"}}".format("just",32)
>>> payload
'{\r\n "name": "just",\r\n "id":"32"}'
0 голосов
/ 01 июня 2018

Проблема связана с тем, что вы используете {и}.Вы должны удвоить их:

payload = "{{\r\n \"name\": \"{0}\",\r\n \"id\":\"{1}\"}}".format(1,2)
0 голосов
/ 01 июня 2018

Это из-за первых и последних скобок.

Вы должны убежать { и }.

"{{\r\n \"name\": \"{}\",\r\n \"id\":\"{}\"}}".format(1,2)
...