Как экранировать фигурные скобки ({}) в строке при использовании .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' для строк?
Как перевернуть строку в Python?
Вывод строки в текстовый файл
Диапазон букв в Python