Как экранировать фигурные скобки ({}) в строке при использовании .format?
Описание проблемы
Я пытаюсь использовать метод format
в строке, чтобы вставить значение, но у меня возникают проблемы с форматированием.
Вот мой код:
print(" \{ Hello \} {0} ".format(42))
Но вывод, который я ожидаю получить, выглядит следующим образом:
{Hello} 42
Тем не менее, вместо этого я получаю ошибку. Как правильно форматировать строку, чтобы добиться желаемого результата?
5 ответ(ов)
Вы можете экранировать фигурные скобки, удвоив их.
Пример:
x = "{{ Hello }} {0}"
print(x.format(42))
В этом коде {{
и }}
преобразуются в одиночные скобки, так что итоговая строка будет выглядеть как "Hello 42".
Если вы хотите отформатировать строку с символами {
или }
, просто удвойте их.
Форматируйте {
с помощью 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
Пользователь задал вопрос о форматировании 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-строка становится более сложной, чем в приведённом примере.
Попробуйте следующее:
x = "{{ Hello }} {0}"
Эта строка содержит фигурные скобки, которые могут использоваться для форматирования. Если вы хотите подставить значение в {0}
, используйте метод .format()
, чтобы выполнить подстановку. Например:
value = "World"
formatted_string = x.format(value)
print(formatted_string)
Вывод будет:
{{ Hello }} World
Обратите внимание, что двойные фигурные скобки {{
и }}
используются для экранирования, чтобы в итоговой строке отобразить одинарные фигурные скобки.
Попробуйте сделать так:
x = " {{ Hello }} {0} "
print(x.format(42))
Обратите внимание, что в Python 3 необходимо использовать круглые скобки для функции print
. В вашем коде используются фигурные скобки внутри строки, чтобы избежать интерпретации {}
как индикаторов форматирования, добавляйте двойные фигурные скобки {{
и }}
. Это позволяет вывести строку "Hello" без изменений.
Как заполнить строку в Python пробелами?
Есть ли в Python метод подстроки 'contains' для строк?
Объединение двух столбцов текста в DataFrame pandas
Как получить имя функции в виде строки?
Вывод строки в текстовый файл