Diferentes formas de formatear cadenas en Python: los 3 métodos principales
Publicado: 2021-02-23El formateo de cadenas es una característica esencial en los lenguajes de programación para formatear o insertar valores y posiciones especificados por el usuario en las cadenas. El lenguaje C tenía una forma de hacer esto con la que podría estar familiarizado si tiene alguna experiencia con el lenguaje C. Python, sin embargo, admite no 1, ni 2, sino 3 formas diferentes de formatear cadenas. Cada forma tiene sus ventajas y desventajas que veremos en este tutorial. También veremos cuál de los 3 métodos es el más utilizado y eficiente.
Aprenda cursos de ciencia de datos en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.
Al final de este tutorial, sabrá lo siguiente:
- Diferentes formas de formato de cadenas
- Su uso con ejemplos.
- ¿Qué camino es el más preferido?
Tabla de contenido
Diferentes formas de formato de cadena
Python ha estado recibiendo múltiples actualizaciones para mejorar el formato de cadenas. Repasemos cada uno de ellos uno por uno.
Método 1: formato de cadena de estilo C
Python incluye la forma antigua de formatear cadenas mediante el uso de caracteres especiales para cada tipo de datos. Este buen método antiguo de formateo de cadenas se adoptó del lenguaje C y sigue siendo muy efectivo. Se utiliza un especificador de formato de cadena "%" seguido de un carácter dedicado para cada tipo de datos para formatear las cadenas.
Repasemos un pequeño ejemplo para entender esto:
número = 8 nombre = "hombre rosa" print(“El nombre es %s y el numero es %d” %(nombre, num)) |
#Producción >> “El nombre es pinkman y el número es 8” |
Como puede ver, el especificador de formato %s se usó para formatear el nombre de la cadena y %d se usó para formatear el número entero. Del mismo modo, también hay un especificador de formato para un flotante. Echemos un vistazo a eso también.
número = 4.32 lis = [ 1 , 3 , 5 ] print( "la lista es %s y el flotante es %f" %(lis, num)) |
#Producción >> lista es [ 1 , 3 , 5 ] y float es 4.320000 |
En el ejemplo anterior, uso el especificador de formato %f para formatear el valor flotante. Dos cosas para notar aquí. Uno, el valor flotante se imprime como 4,320000 y no solo como 4,32. ¿Porque? Esto se debe a que Python, de manera predeterminada, usa una precisión de 6 puntos decimales para los flotantes. En segundo lugar, imprimí una lista usando el especificador de formato de cadena. No significa que el especificador de formato %s pueda admitir cualquier tipo de datos. Simplemente lo convierte en cadena y lo imprime. Entonces, la lista que se imprime es esencialmente una cadena y no una lista.
Muy bien, entonces, ¿cómo especificar cuánta precisión de punto decimal se requiere?
print(“la lista es %s y float con precisión de 2 puntos es %.2f” %(lis, num)) |
#Producción >> list es [ 1 , 3 , 5 ] y float es 4.32 |
Otro punto a tener en cuenta aquí es que necesitamos dar las variables en el orden en que se usan en la cadena. Si se cambia el orden, la salida se configura para verse afectada en consecuencia. Una alternativa para no tener que dar las variables en el orden correcto cada vez es usar el formato de cadena de una manera ligeramente diferente.
print(“la lista es %(a)s y el flotante es %(b)f” %{“b”: num, “a”: lis}) |
#Producción >> lista es [ 1 , 3 , 5 ] y float es 4.320000 |
Y como ven, esto es muy engorroso de escribir.
Entonces, solo para resumir, los 3 especificadores de formato más utilizados son:
- %s para cadenas
- %d para números enteros
- %.<precisión decimal>f para flotantes
Método 2: Nuevo formato de cadena de estilo
Python 3 introdujo una mejor manera de dar formato a cadenas usando un método format() en cadenas. Se usa un marcador de posición colocando corchetes y el método de formato contiene las variables que deben colocarse en esas posiciones en la cadena. Echemos un vistazo a un pequeño ejemplo para entender esto.
nombre = "skyler" print(“Hola, mi nombre es {}”.format(nombre)) |
#Producción >> Hola, mi nombre es skyler |
Esto es mucho mejor que el formato de estilo antiguo que vimos anteriormente. Las llaves actúan como un marcador de posición para el nombre de la variable que contiene una cadena. Tenga en cuenta que con el método de formato no necesitamos especificar el tipo de datos de la variable como lo hicimos en el formato antiguo.
Un ejemplo con números también:
número = 3 int = 4.34 nombre = "jessy" print( “Hola, mi nombre es {}, el número es {} y float es {}” .format(name, num, int)) |
#Producción >> Hola, mi nombre es jessy, el número es 3 y float es 4.34 |
¡Limpio! Como puede ver, necesita que las variables se pasen al método de formato en el orden en que se usaron en la cadena. Otra forma de usar el método de formato al no requerir que pasemos todas las variables en el orden correcto:
print(“Hola, mi nombre es {nombre}, el número es {num} y float es {int}”.format(int=int, num=num, nombre=nombre)) |
#Producción >> Hola, mi nombre es jessy, el número es 3 y float es 4.34 |
En el ejemplo anterior, vemos que cuando las variables se mencionan explícitamente en los marcadores de posición, ya no es necesario pasarlas al método de formato en el orden correcto.
También podemos pasar la posición de la variable en los marcadores de posición para realizar un mejor seguimiento de ellos.
print(“Hola, mi nombre es {0}, el número es {1} y float es {2}”.format(name, num, int)) |
#Producción >> Hola, mi nombre es jessy, el número es 3 y float es 4.34 |
Método 3: usar cuerdas F
Introducido en Python 3.6, f-strings es la forma más fácil y eficiente de formatear cadenas. Estos también se denominan literales de cadena con formato. Usan el literal f al comienzo de la cadena para decirle a Python que lo trate como una cadena formateada. Los marcadores de posición contienen las variables reales que deben colocarse en esa posición.
Echemos un vistazo a un ejemplo.
nombre = “heisenberg” factura = 100.43print(f”El nombre es {nombre} y la factura es {factura}”) |
#Producción >> El nombre es heisenberg y el billete es 100.43 |
Esto fue bastante fácil. Además, también podemos poner expresiones directamente en lugar de variables.
un = 5 b = 8 print( f”La suma es {a+b} “ ) |
#Producción >> La suma es 13 |
También podemos llamar a las funciones directamente y obtener su salida en los literales de cadena.
print( f”El nombre es {nombre.superior()} “ ) |
#Producción >> El nombre es HEISENBERG |
Además, también podemos usar las cadenas f para devolver directamente el valor de las funciones.
def combiner(nombre, edad, dinero): return f”{nombre} es mayor de edad {edad} y tiene salario {dinero}” |
Saul Goodman es mayor de 45 años y tiene salario 2000000 |
Como vemos, cuando pasamos las funciones directamente a los marcadores de posición, llama a las funciones y coloca directamente las salidas entre llaves. Claramente, este método de formato de cadena es el más eficiente y fácil de escribir.
Pago: Preguntas y respuestas de la entrevista de Python
Antes de que te vayas
El formateo de cadenas es una tarea regular y la forma en que Python introdujo el método de formato y las cadenas f lo hacen muy fácil para las personas que trabajan con Python. Las cadenas f son la forma más utilizada y preferida de trabajar con el formato de cadena, ya que hace que sea muy fácil de escribir y mantener. Además, ¡también hace que el código sea más pitónico! Debajo del capó, las cadenas f usan el protocolo __format__. El literal f es solo azúcar sintáctico que python ofrece a sus usuarios para que nos resulte más fácil escribir el formato de cadena.
Si tiene curiosidad por aprender sobre ciencia de datos, consulte el Programa ejecutivo PG en ciencia de datos de IIIT-B y upGrad, creado para profesionales que trabajan y ofrece más de 10 estudios de casos y proyectos, talleres prácticos, tutoría con expertos de la industria, 1 -on-1 con mentores de la industria, más de 400 horas de aprendizaje y asistencia laboral con las mejores empresas.
1. El método format() de cadena incorporado de Python transforma una cadena suministrada en una salida más útil. La función format() en Python3 es uno de los métodos de formateo de cadenas que permite sustituciones múltiples, así como el formateo de valores. El método format() utiliza formato posicional para concatenar elementos dentro de una cadena. Agregue un argumento adicional a su método de impresión en Python 3 para decirle a la computadora que no desea que la siguiente cadena esté en una nueva línea. Considere el siguiente escenario. 1. Son objetos de cadena si adquirimos un valor flotante a través de la entrada del usuario a través de la terminal, así como al leerlo desde un archivo. Como resultado, debemos convertirlos explícitamente en flotantes para realizar las operaciones necesarias como la suma, la multiplicación, etc.¿Qué métodos de formateo en Python 3 permiten múltiples sustituciones y formateo de valores?
2. La cadena se puede formatear usando numerosos pares de corchetes. Si se requiere el reemplazo de otra variable en una cadena larga, se puede agregar el segundo conjunto de llaves y pasar el segundo valor al procedimiento.
3. La función format() en Python acepta cualquier número de parámetros. Sin embargo, se separa principalmente en los siguientes dos tipos de parámetros.
un. Los parámetros posicionales son una lista de parámetros que se pueden recuperar poniendo el índice del parámetro entre llaves (índice).
B. Parámetros de palabras clave: esta es una lista de parámetros clave=valor a los que se puede acceder utilizando la clave del parámetro entre llaves.
4. El método format() devuelve una cadena que ha sido formateada. La función format() lee el tipo de argumentos que se le proporcionan y los formatea de acuerdo con los códigos de formato de la cadena. ¿Cómo se imprime sin una nueva línea en Python 3?
print('¡Bienvenido!', fin = ')
En este caso, cualquier otra función de impresión aparecerá en la misma línea. ¿Podemos convertir cadenas para flotar en Python?
2. El método float() en Python se puede usar para convertir una cadena en un flotante. Es una función integrada para convertir un número de punto flotante en un objeto. Internamente, la función float() llama a la función __float__() del objeto proporcionado.