En este paso, aprenderá formas modernas y efectivas de formatear cadenas (strings) en Python. Esto es crucial para crear salidas dinámicas y legibles al incrustar variables y expresiones dentro de las cadenas.
Aunque puede usar el operador + para concatenar cadenas, se vuelve torpe al mezclar cadenas con tipos que no son cadenas, como números, ya que debe convertirlos manualmente usando str().
Python ofrece mejores soluciones. El método más común y recomendado es usar f-strings (literales de cadena formateados).
Las f-strings, introducidas en Python 3.6, proporcionan una forma concisa y legible de incrustar expresiones dentro de las cadenas. Simplemente antepone a la cadena f o F y escribe expresiones dentro de llaves {}.
Abra el archivo string_formatting.py y agregue el siguiente código:
## string_formatting.py
name = "Alice"
age = 30
## Usando una f-string para incrustar variables
greeting = f"Hello, my name is {name} and I am {age} years old."
print(greeting)
## También puede incrustar expresiones directamente
print(f"In 5 years, I will be {age + 5} years old.")
Guarde y ejecute el script:
python ~/project/string_formatting.py
Hello, my name is Alice and I am 30 years old.
In 5 years, I will be 35 years old.
Las f-strings también le permiten controlar el formato de los valores incrustados utilizando especificadores de formato, que siguen a dos puntos (:) dentro de las llaves.
Agregue los siguientes ejemplos a string_formatting.py:
## string_formatting.py
## ... (código anterior) ...
pi = 3.14159265
## Formatear un flotante (*float*) a 2 decimales
print(f"The value of pi is approximately {pi:.2f}")
## Rellenar un número con ceros a la izquierda hasta un ancho de 8
order_id = 45
print(f"Order ID: {order_id:08}")
## Alinear texto dentro de un espacio dado (ancho de 10)
## < (izquierda), ^ (centro), > (derecha)
text = "Python"
print(f"'{text:<10}'")
print(f"'{text:^10}'")
print(f"'{text:>10}'")
## Añadir coma como separador de miles
large_number = 1234567890
print(f"A large number: {large_number:,}")
Guarde y ejecute el script nuevamente:
python ~/project/string_formatting.py
Hello, my name is Alice and I am 30 years old.
In 5 years, I will be 35 years old.
The value of pi is approximately 3.14
Order ID: 00000045
'Python '
' Python '
' Python'
A large number: 1,234,567,890
Antes de las f-strings, el método str.format() era la forma preferida de formatear cadenas. Funciona colocando llaves de marcador de posición {} en la cadena y luego pasando valores al método format().
Agregue este ejemplo al final de string_formatting.py:
## string_formatting.py
## ... (código anterior) ...
## Usando el método str.format()
item = "moon"
cost = 99.95
statement = "The {} costs {:.2f} dollars.".format(item, cost)
print(statement)
Guarde y ejecute el archivo para ver la salida:
python ~/project/string_formatting.py
Hello, my name is Alice and I am 30 years old.
In 5 years, I will be 35 years old.
The value of pi is approximately 3.14
Order ID: 00000045
'Python '
' Python '
' Python'
A large number: 1,234,567,890
The moon costs 99.95 dollars.
Aunque str.format() sigue siendo útil, las f-strings son generalmente más legibles y rápidas.