экранировать одиночную скобку в струнной - PullRequest
3 голосов
/ 27 февраля 2020

Я пытаюсь напечатать строку в следующем формате:

"rob: {color: red  , number: 4}"

с использованием f-строки для заполнения трех значений:

f"{name}: color: {color}  , number: {number}" #missing brackets

это выдает:

"rob: color: red  , number: 4" #missing brackets

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

Ответы [ 3 ]

4 голосов
/ 27 февраля 2020

Цель:

"rob: {color: red  , number: 4}"

Выполнено:

>>> name = 'rob'
>>> color = 'red'
>>> number = 4
>>> print(f"{name}: {{color: {color} , number: {number}}}")
rob: {color: red , number: 4}
3 голосов
/ 27 февраля 2020

Используйте двойные скобки, когда вы хотите их показать, и одинарные скобки для переменных. Смотрите этот пост

f"{name}: {{color: {color}  , number: {number} }}" 
2 голосов
/ 27 февраля 2020

Вы можете оценить строковый литерал '{' и строковый литерал '}' внутри f-строки, заключив их в фигурные скобки для выполнения оценки:

f"{name}: {'{'}color: {color}, number: {number}{'}'}"

Пример:

>>> name = 'bob'
>>> color = 'red'
>>> number = 4
>>> f"{name}: {'{'}color: {color}, number: {number}{'}'}"
'bob: {color: red, number: 4}'
...