¿Cómo escapar de las llaves en cuerdas f? [duplicar]

Resuelto JDAnders asked hace 7 años • 1 respuestas

Tengo una cadena en la que me gustaría usar llaves, pero también aprovecho la función de cadenas f. ¿Existe alguna sintaxis que funcione para esto?

Aquí hay dos formas en las que no funciona. Me gustaría incluir el texto literal {bar}como parte de la cadena.

foo = "test"
fstring = f"{foo} {bar}"

NameError: name 'bar' is not defined

fstring = f"{foo} \{bar\}"

SyntaxError: f-string expression part cannot include a backslash

Resultado deseado:

'test {bar}'

Editar: Parece que esta pregunta tiene la misma respuesta que ¿ Cómo puedo imprimir caracteres literales entre llaves en una cadena y también usar .format en ella? , pero solo puedes saberlo si sabes que str.formatusa las mismas reglas que la cadena f. Es de esperar que esta pregunta tenga valor para vincular a los buscadores de cadenas f con esta respuesta.

JDAnders avatar Mar 01 '17 07:03 JDAnders
Aceptado

Aunque hay un error de sintaxis personalizado por parte del analizador, el mismo truco funciona como para llamar .formata cadenas normales.

Utilice rizos dobles:

>>> foo = 'test'
>>> f'{foo} {{bar}}'
'test {bar}'

Se menciona en las especificaciones aquí y en los documentos aquí .

wim avatar Mar 01 '2017 00:03 wim