Ejemplos de f-strings en Python: los 12 que sí necesitas

Todos los formatos que acabarás buscando, reunidos en un solo sitio. El patrón siempre es f"{value:format}": valor, dos puntos y especificador de formato.

🎙️ Publicado y grabado:

🎧 Escuchar esta guía

La respuesta en una sola pantalla

name, price, big, ratio = "Ada", 49.9, 1234567, 0.8756

f"{name}"              # Ada                básico
f"{price:.2f}"         # 49.90              2 decimales ← lo más buscado
f"{big:,}"             # 1,234,567          separador de miles
f"{ratio:.1%}"         # 87.6%              porcentaje
f"{price:>10.2f}"      # "     49.90"       alineado a la derecha, ancho 10
f"{name:<10}|"         # "Ada       |"      alineado a la izquierda (¡tablas!)
f"{name:^10}"          # "   Ada    "       centrado
f"{42:05d}"            # 00042              rellenado con ceros
f"{255:x}" f"{255:b}"  # ff / 11111111      hexadecimal, binario
f"{2+3}"               # 5                  admite cualquier expresión
f"{price=}"            # price=49.9         impresión de depuración (3.8+) ← infravalorada
f"{{literal}}"         # {literal}          llaves escapadas

Fechas: el otro gran caso

from datetime import datetime
now = datetime.now()

f"{now:%Y-%m-%d}"         # 2026-07-22
f"{now:%H:%M}"            # 14:30
f"{now:%b %d, %Y}"        # Jul 22, 2026
f"{now:%A}"               # Wednesday

Ancho y precisión dinámicos

width, prec = 12, 3
f"{price:{width}.{prec}f}"   # "      49.900" — los especificadores también pueden ser variables
La trampa de las comillas anidadas
En Python ≤3.11, f"{d["key"]}" produce un SyntaxError: las comillas dobles interiores cierran la cadena. Usa comillas distintas: f"{d['key']}". Python 3.12 y posteriores permiten anidar el mismo tipo de comillas, pero, si tu código puede ejecutarse en versiones antiguas, mezclar estilos sigue siendo el hábito seguro.
Una opinión sincera
Verás el formato con %s y .format() en código antiguo: aprende a leerlos, pero no los uses al escribir código nuevo. Hay una excepción: el registro de eventos (logger.info("x=%s", x)) conserva a propósito el estilo con %, para que la cadena solo se construya cuando ese nivel de registro está activo.
📚 Esta es una página de nuestra serie de Python. Curso intensivo completo, con audio para el trayecto: Python en 10 minutos →