Formato de cadenas en Python: f-strings, format() y operador %
Esta lección es una traducción del original en inglés.Read in EnglishAvisar de un error de traducción
Imagina que estás haciendo el recibo de una cafetería. Tienes que combinar el nombre de un producto, un precio y una cantidad en una sola línea limpia. Podrías pegar cadenas con +, pero enseguida se vuelve un lío.
Dar formato a una cadena es como rellenar una plantilla con huecos. Escribes la estructura de la frase una vez y luego colocas los valores donde corresponde. Es más limpio, más rápido y mucho más fácil de leer.
Python te ofrece tres formas de dar formato a las cadenas: las f-strings, el método `.format()` y el operador `%`. En este tutorial aprenderás las tres y descubrirás cuándo usar cada una.
Por qué dar formato es mejor que concatenar
Cuando alguien que empieza combina variables con texto por primera vez, suele recurrir al operador +. Funciona, pero te obliga a convertir los números en cadenas a mano y a llenarlo todo de signos +.
name = "Latte"
price = 4.5
qty = 2
print("Item: " + name + " | Price: $" + str(price) + " | Qty: " + str(qty))name = "Latte"
price = 4.5
qty = 2
print(f"Item: {name} | Price: ${price} | Qty: {qty}")Las dos líneas producen la misma salida. Pero la versión con f-string es más corta, se lee mejor y nunca tienes que llamar a str() tú mismo. Python hace la conversión de forma automática.
Cómo usar las f-strings en Python
Una f-string (literal de cadena con formato) empieza con la letra f antes de la comilla de apertura. Dentro de la cadena, pones variables o expresiones entre llaves {}.
Python evalúa lo que haya dentro de las llaves e inserta el resultado en la cadena. Las f-strings llegaron en Python 3.6 y hoy son la forma recomendada de dar formato a las cadenas.
My name is Alice. I am 30 years old. I live in Seattle.
La f antes de las comillas es lo que la hace especial. Sin ella, Python imprimiría el texto literal {name} en lugar del valor de la variable.
Hello, {name}!
Hello, Alice!¿Qué expresiones puedes poner dentro de una f-string?
Las f-strings no se limitan a variables sueltas. Puedes poner cualquier expresión válida de Python entre las llaves: operaciones matemáticas, llamadas a funciones, llamadas a métodos e incluso condicionales.
Area: 50 square units Uppercase: PYTHON Result: Pass
Piensa en cada {} como en una pequeña calculadora. Python evalúa la expresión, convierte el resultado en cadena y lo coloca en su sitio.
Cómo dar formato a números en las f-strings de Python
Aquí es donde las f-strings brillan de verdad. Después del nombre de una variable, añades dos puntos : seguidos de un especificador de formato que controla el aspecto del número.
Decimales con .Nf
Usa :.Nf para mostrar exactamente N decimales. La f viene de "fixed-point" (notación de punto fijo). Es imprescindible para mostrar precios, medidas y puntuaciones.
Price: $4.50 Pi: 3.1416 Rounded: 3.1
Comas como separador de miles en números grandes
Usa :, para añadir comas como separador de miles en números grandes. Así, un número como 1000000 se lee de un vistazo.
Population: 8,900,000 Salary: $75,000.50
Porcentajes con %
Usa :.N% para mostrar un número decimal como porcentaje. Python multiplica el valor por 100 y añade el signo % automáticamente.
Progress: 75.6% Tax rate: 8.25%
Relleno y alineación
Puedes fijar un ancho mínimo para un valor y elegir si se alinea a la izquierda, a la derecha o al centro. Es perfecto para crear salidas limpias y alineadas, como tablas.
|Left | | Center | | Right| | 42| |0000000042|
Cómo usar el método .format()
Antes de que existieran las f-strings, los programadores de Python usaban el método .format(). Funciona poniendo marcadores {} vacíos en una cadena y llamando después a .format() con los valores que van en ellos.
Hello, Bob! You are 25 years old. Hello, Bob! You are 25 years old. Nice to meet you, Bob! Hello, Bob! You are 25 years old.
El método .format() admite los mismos especificadores de formato que las f-strings. Todo lo que va después de los dos puntos funciona igual.
Price: $19.99 Big number: 1,000,000
Las posiciones numeradas son útiles cuando necesitas repetir un valor varias veces en la misma cadena. Puedes hacer referencia al mismo índice tantas veces como quieras.
El operador % para dar formato a cadenas (estilo antiguo)
El operador % es la forma más antigua de dar formato a cadenas en Python. Viene de la función printf de C. Lo verás en código antiguo y conviene que lo reconozcas, pero no necesitas usarlo en código nuevo.
Hello, Charlie! You are 35 years old. Price: $9.99
%s significa "inserta aquí una cadena", %d significa "inserta un entero" y %f significa "inserta un float". Los valores van al final, después del operador %.
f-strings, format() o el operador %: ¿cuál deberías usar?
Los tres enfoques producen el mismo resultado. La diferencia está en la legibilidad y la comodidad. Aquí tienes la misma salida escrita de tres formas:
Coffee: $4.50 Coffee: $4.50 Coffee: $4.50
f-strings de varias líneas y casos reales
Para cadenas con formato más largas, puedes usar comillas triples con el prefijo f. Es útil para mensajes de varias líneas, informes y plantillas de correo.
Hi Alice, Your order #4821 has been confirmed. Total: $37.50 Thank you for shopping with us!
Un ejemplo práctico: crear una tabla con formato. Los especificadores de alineación hacen que cada columna quede bien alineada.
Product Price Qty Total ------------------------------------- Laptop 999.99 1 999.99 Mouse 29.50 3 88.50 Keyboard 74.00 2 148.00
x=42 y=17 x + y=59
Ejercicios de práctica
Crea las variables item con el valor "Cappuccino" y price con el valor 4.5. Después, usa una f-string para imprimir una línea de recibo exactamente con este formato:
Cappuccino .......... $4.50El nombre del producto debe ir alineado a la izquierda y el precio debe mostrar exactamente 2 decimales. Usa la cadena " .......... $" entre el nombre y el precio.
Crea una variable population con el valor 7900000000. Imprímela con una f-string que use comas como separador de miles para que la salida sea:
World population: 7,900,000,000Crea tres variables: name = "Alice", score = 95.8 y grade = "A+". Imprime una fila de tabla con formato en la que:
Salida esperada (los caracteres | forman parte de la salida):
| Alice | 95.8 | A+ |El código de abajo debería imprimir "Hello, Sam! You scored 92.5%.", pero tiene errores. Encuéntralos y corrígelos.
Hay 2 errores que corregir.
Crea estas variables:
first_name = "Jordan"items = 3total = 89.95Después, usa una f-string de varias líneas (con comillas triples) para imprimir exactamente este mensaje:
Hi Jordan,
Thank you for your purchase of 3 items.
Your total is $89.95.
Have a great day!Asegúrate de que el total muestre exactamente 2 decimales.