Blog

f-strings en Python: guía rápida de formato

Una f-string evalúa la expresión que va entre llaves y mete el resultado en el texto. Es más rápida que % y .format(), y se lee en el orden en que piensas.

La parte después de los dos puntos es una especificación de formato, y ahí vive casi todo el comportamiento útil.

Lo básico

La f antes de la comilla es lo que activa las llaves.

# the basics
name, age = 'ada', 36
print(f'{name} is {age}')

Imprime:

ada is 36

Adentro cabe cualquier expresión

Llamadas a métodos, indexación, aritmética y comparaciones: todo funciona.

# any expression fits inside the braces
items = ['a', 'b', 'c']
print(f'{len(items)} items, first is {items[0].upper()}')
print(f'{age * 2} and {age > 30}')

Imprime:

3 items, first is A
72 and True

Mantenlas cortas. Si la expresión requiere pensar, ponle nombre en la línea de arriba.

Formato de números

Después de los dos puntos: relleno y alineación, después ancho, después precisión y tipo.

# number formatting
price = 1234.5678
print(f'{price:.2f}')
print(f'{price:,.2f}')
print(f'{price:>12.2f}|')
print(f'{price:<12.2f}|')
print(f'{price:^12.2f}|')
print(f'{0.4567:.1%}')

Imprime:

1234.57
1,234.57
     1234.57|
1234.57     |
  1234.57   |
45.7%

< es a la izquierda, > a la derecha, ^ al centro. La coma inserta separadores de miles, y % multiplica por 100 y agrega el signo.

Alinear columnas

Ancho más alineación alcanza para tablas legibles en la terminal.

# padding and alignment for tables
rows = [('apple', 3), ('bread', 12), ('milk', 1)]
for item, qty in rows:
    print(f'{item:<10}{qty:>4}')

Imprime:

apple        3
bread       12
milk         1

El signo igual para depurar

Poner = al final imprime la expresión además de su valor. Es la depuración con print más rápida que hay en Python.

# the = suffix prints the expression too
total = sum(q for _, q in rows)
print(f'{total=}')
print(f'{len(rows)=}')

Imprime:

total=16
len(rows)=3

Fechas y otros tipos

La especificación de formato se le pasa al objeto, así que cualquier cosa con un método __format__ tiene su propio mini lenguaje. Las fechas usan los códigos de strftime.

# dates and other __format__ types
import datetime
when = datetime.datetime(2026, 8, 20, 14, 30)
print(f'{when:%d %B %Y}')
print(f'{when:%H:%M}')

Imprime:

20 August 2026
14:30

Llaves literales

Duplícalas.

# literal braces are doubled
print(f'{{not a placeholder}} but {name} is')

Imprime:

{not a placeholder} but ada is

Relleno con ceros, signos y caracteres de relleno

Un cero antes del ancho rellena con ceros. Un más obliga a mostrar el signo. Cualquier carácter antes del marcador de alineación se vuelve el relleno.

# fill characters and signs
print(f'{42:05d}')
print(f'{42:+d} {-42:+d}')
print(f'{"title":*^20}')

Imprime:

00042
+42 -42
*******title********

Qué recordar

  • La especificación de formato va después de dos puntos, dentro de las llaves.

  • :,.2f cubre casi todo el formato de dinero.

  • f"{valor=}" imprime la expresión y el valor.

  • Duplica las llaves cuando quieras una llave literal.

Una advertencia: nunca construyas SQL ni comandos de shell con f-strings. Usa el soporte de parámetros de tu driver de base de datos, y subprocess con una lista.

How useful was this post?

Click on a heart to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.