Python String Formatting

(Patrocinadores) Empieza a aprender Python con el tutorial gratuito de Introducción a Python de DataCamp. Aprende Ciencia de Datos completando desafíos de codificación interactivos y viendo videos de instructores expertos. Start Now!

Actualizado el 07 de enero de 2020

El método format() permite formatear la cadena de cualquier manera que desee.

Sintaxis: template.format(p1, p1, .... , k1=v1, k2=v2)

el modelo es una cadena que contiene códigos de formato, el método format() utiliza su argumento para sustituir el valor de cada código de formato. Por ejemplo:

>>> 'Sam has {0} red balls and {1} yellow balls'.format(12, 31)

{0} y {1} son códigos de formato. El código de formato {0} se sustituye por el primer argumento de format(), es decir, 12, mientras que {1} se sustituye por el segundo argumento de format(), es decir, 31.

Salida esperada:

Sam has 12 red balls and 31 yellow balls

Esta técnica está bien para el formato simple, pero ¿qué pasa si desea especificar la precisión en el número de punto flotante? Para ello es necesario aprender más sobre los códigos de formato. Aquí está la sintaxis completa de los códigos de formato.

Sintaxis: {:}

El type se puede utilizar con los códigos de formato:

Códigos de formato Descripción
d para enteros
f para números de coma flotante
b para números binarios
o para números octales
x para números hexadecimales octales
s para cadena
e para punto flotante en formato de exponente

Los siguientes ejemplos harán las cosas más claras.

Ejemplo 1:

>>> "Floating point {0:.2f}".format(345.7916732)

Aquí especificamos 2 dígitos de precisión y f se utiliza para representar el número de punto flotante.

Salida esperada:

Floating point 345.79

Ejemplo 2:

12
>>> import math>>> "Floating point {0:10.3f}".format(math.pi)

Aquí especificamos 3 dígitos de precisión, 10 para el ancho y f para el número de punto flotante.

Salida esperada:

Floating point 3.142

Ejemplo 3:

"Floating point pi = {0:.3f}, with {1:d} digit precision".format(math.pi, 3)

Aquí d en {1:d} representa el valor entero.

Salida esperada:

Floating point pi = 3.142, with 3 digit precision

Es necesario especificar la precisión sólo en el caso de los números de punto flotante si se especifica la precisión para los enteros ValueError se levantará.

Ejemplo 5:

'Sam has {1:d} red balls and {0:d} yellow balls'.format(12, 31)

Salida esperada:

Sam has 31 red balls and 12 yellow balls

Ejemplo 6:

"In binary 4 is {0:b}".format(4) # b for binary, refer to Fig 1.1

Salida esperada:

In binary 4 is 100

Ejemplo 7:

12
array = "A = {0}, B = {1}, C = {2}".format(*array)

Salida esperada:

A = 34, B = 66, C = 12

Ejemplo 8:

123456
d = {'hats' : 122,'mats' : 42}"Sam had {hats} hats and {mats} mats".format(**d)

Salida esperada:

Sam had 122 hats and 42 mats

El método format()también admite argumentos de palabras clave.

'Sam has {red} red balls and {green} yellow balls'.format(red = 12, green = 31)

Nótese que al usar argumentos de palabras clave necesitamos usar argumentos dentro de {} no índice numérico.

También puedes mezclar argumentos de posición con argumentos de palabras clave

12
'Sam has {red} red balls, {green} yellow balls \and {0} bats'.format(3, red = 12, green = 31)

El método format() de formateo de cadenas es bastante nuevo y fue introducido en Python 2.6 . Hay otra técnica antigua que se ve en los códigos de legado que le permite dar formato a la cadena utilizando % operador en lugar de format() método.

Vamos a tomar un ejemplo.

"%d pens cost = %.2f" % (12, 150.87612)

Aquí estamos utilizando la cadena de plantilla a la izquierda de %. En lugar de {} para los códigos de formato estamos utilizando %. En el lado derecho de % usamos tuple para contener nuestros valores. %d y %.2f se llaman especificadores de formato, comienzan con % seguido por el carácter que representa el tipo de datos. Por ejemplo, %d especificador de formato es un marcador de posición para un número entero, de manera similar %.2f es un marcador de posición para el número de punto flotante.

Así que %d se sustituye por el primer valor de la tupla es decir 12 y %.2f se sustituye por el segundo valor es decir 150.87612.

Salida esperada:

12 pens cost = 150.88

Algunos ejemplos más.

Ejemplo 1:

Nuevo:

"{0:d} {1:d} ".format(12, 31)

Antiguo:

"%d %d" % (12, 31)

Resultado esperado:

12 31

Ejemplo 2:

Nuevo:

"{0:.2f} {1:.3f}".format(12.3152, 89.65431)

Antiguo:

"%.2f %.3f" % (12.3152, 89.65431)

Salida esperada:

12.32 89.654

Ejemplo 3:

Nuevo:

"{0:s} {1:o} {2:.2f} {3:d}".format("Hello", 71, 45836.12589, 45 )

Antiguo:

Deja una respuesta

Tu dirección de correo electrónico no será publicada.