Las cadenas f están disponibles en Python 3.6 y son muy útiles para formatear cadenas:
>>> n='you'
>>> f'hello {n}, how are you?'
'hello you, how are you?'
Leer más sobre ellos en las f-Strings de Python 3: una sintaxis de formato de cadena mejorada (Guía) . Encontré un patrón interesante:
Tenga en cuenta que el uso de llaves triples dará como resultado que solo haya llaves simples en su cadena:
>>> f"{{{74}}}" '{74}'
Sin embargo, puede obtener más llaves para mostrar si usa más de llaves triples:
>>> f"{{{{74}}}}" '{{74}}'
Y este es exactamente el caso:
>>> f'{74}'
'74'
>>> f'{{74}}'
'{74}'
Ahora si pasamos de dos {
a tres, el resultado es el mismo:
>>> f'{{{74}}}'
'{74}' # same as f'{{74}}' !
¡Entonces necesitamos hasta 4! ( {{{{
) para obtener dos llaves como salida:
>>> f'{{{{74}}}}'
'{{74}}'
¿Por qué es esto? ¿Qué sucede con dos llaves para que Python requiera una extra a partir de ese momento?
python
python-3.x
string
formatting
f-string
fedorqui 'así que deja de dañar'
fuente
fuente
f"{{2+2}}"
yf"{{{2+2}}}"
, que son'{2+2}'
y'{4}'
respectivamentef'{2+2}'
devuelve 4,f'{{2+2}}'
devuelve 2 + 2,f'{{{2+2}}}'
➝ {4},f'{{{{2+2}}}}'
➝ {{2 + 2}} y así sucesivamente. Tiene sentido, pero se desconcierta un poco a primera vista.f'{74}'
es lo mismo quef'74'
.str.format
también lo hace."{74}".format(...)
requeriría una secuencia con al menos 74 elementos.Respuestas:
Las llaves dobles escapan de las llaves, para que no ocurra interpolación:
{{
➝{
y}}
➝}
. Y74
sigue siendo una cadena sin cambios,'74'
.Con llaves dobles, las llaves dobles exteriores se escapan, igual que arriba. Las llaves internas, por otro lado, conducen a una interpolación regular de cadenas del valor
74
.Es decir, la cadena
f'{{{74}}}'
es equivalente af'{{ {74} }}'
, pero sin espacios (o, equivalentemente, a'{' + f'{74}' + '}'
).Puede ver la diferencia al reemplazar la constante numérica por una variable:
fuente