26

Как экранировать фигурные скобки ({}) в строке при использовании .format?

14

Описание проблемы

Я пытаюсь использовать метод format в строке, чтобы вставить значение, но у меня возникают проблемы с форматированием.

Вот мой код:

print(" \{ Hello \} {0} ".format(42))

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

 {Hello} 42 

Тем не менее, вместо этого я получаю ошибку. Как правильно форматировать строку, чтобы добиться желаемого результата?

5 ответ(ов)

1

Вы можете экранировать фигурные скобки, удвоив их.

Пример:

x = "{{ Hello }} {0}"
print(x.format(42))

В этом коде {{ и }} преобразуются в одиночные скобки, так что итоговая строка будет выглядеть как "Hello 42".

1

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

Форматируйте { с помощью f'{{', а } — с помощью f'}}'.

Вот пример:

name = "bob"
print(f'Hello {name} ! I want to print }} and {{ or {{ }}')

Результат будет следующим:

Hello bob ! I want to print } and { or { }

Или для конкретного примера:

number = 42
print(f'{{Hello}} {number}')

Выведет:

{Hello} 42

В конце концов, вот ещё один пример:

number = 42
string = "bob"
print(f'{{Hello}} {{{number}}} {number} {{{string}}} {string} ')

Результат будет таким:

{Hello} {42} 42 {bob} bob
0

Пользователь задал вопрос о форматировании JSON-строки, вот его комментарий:

Я пытался отформатировать небольшой JSON для определённых целей, например: '{"all": false, "selected": "{}"}'.format(data), чтобы получить что-то вроде {"all": false, "selected": "1,2"}.

Проблема с "экранированием фигурных скобок" довольно часто возникает при работе с JSON.

Я предлагаю сделать вот так:

import json
data = "1,2"
mydict = {"all": False, "selected": data}
json_string = json.dumps(mydict)  # Обратите внимание, что мы используем False без кавычек

Это будет чище, чем альтернативный вариант:

'{{"all": false, "selected": "{}"}}'.format(data)

Использование библиотеки json определенно предпочтительнее, особенно когда JSON-строка становится более сложной, чем в приведённом примере.

0

Попробуйте следующее:

x = "{{ Hello }} {0}"

Эта строка содержит фигурные скобки, которые могут использоваться для форматирования. Если вы хотите подставить значение в {0}, используйте метод .format(), чтобы выполнить подстановку. Например:

value = "World"
formatted_string = x.format(value)
print(formatted_string)

Вывод будет:

{{ Hello }} World

Обратите внимание, что двойные фигурные скобки {{ и }} используются для экранирования, чтобы в итоговой строке отобразить одинарные фигурные скобки.

0

Попробуйте сделать так:

x = " {{ Hello }} {0} "
print(x.format(42))

Обратите внимание, что в Python 3 необходимо использовать круглые скобки для функции print. В вашем коде используются фигурные скобки внутри строки, чтобы избежать интерпретации {} как индикаторов форматирования, добавляйте двойные фигурные скобки {{ и }}. Это позволяет вывести строку "Hello" без изменений.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь