Получение ключевой ошибки при форматировании строкового словаря в python - PullRequest
0 голосов
/ 17 апреля 2020

Строка кода:

data = '{"username": {u}, "password": {p}}'.format(u=user_name, p=password)

Я просто хочу вставить переменные user_name и password внутри приведенного выше строкового слова в местах u и p соответственно

Ошибка:

data = '{"username": {u}, "password": {p}}'.format(u=user_name, p=password)
KeyError: '"username"'

Я также пробовал: data = f'\{"username": {user_name}, "password": {password}\}'

Но, похоже, это не сработало.

Есть ли другой способ справиться с этим?

Ответы [ 2 ]

3 голосов
/ 17 апреля 2020

Вам нужно удвоить фигурные скобки, чтобы избежать их в шаблонах str.format .

Хотя код странный, почему вы пытаетесь вставить материал? в строковый псевдо-диктат вместо строкового финального, например json.dumps({'username': u, 'password': p})?

Потому что здесь содержимое ваших элементов данных будет «необработанным», например, при условии user_name="billy bob" и password="george", что вы делаете, чтобы в итоге получить

'{"username": billy bob, "password": george}'

, который не делает много смысла для меня.

1 голос
/ 17 апреля 2020

Если вы хотите включить {} в строку f, мы просто удваиваем их.

Таким образом, следующий результат дает желаемый результат.

>>> username = "foo"
>>> password = "bar"
>>> f'{{"username": {username}, "password": {password}}}'
'{"username": foo, "password": bar}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...