Formato de string con format en Python en IOTeca

Formato de string con format en Python

En ese tutorial veremos como optimizar la impresión de cadenas de carácteres brindándoles un formato adecuado.

En las últimas versiones de Python la función print() admite varios argumentos seguidos. Los argumentos deben separarse por comas y se mostrarán en el mismo orden y en la misma línea, separados por espacios.

Veamos los siguiente ejemplos:

nombre = "Juan"
edad = 20

print(Nombre, edad)
print(Nombre, edad, sep="-")
print(Nombre, edad, sep="-", end=".")

El parámetro sep permite especificar un un separador disinto al espacio por defecto.
El parámetro end especifica una cadena que se mostrará al final de la línea. Tener en cuenta que con end el cursor no baja de línea (elimina el n).

Si necesitamos optimizar más la impresión por consola de las cadenas de carácteres podemos darle un formato adecuado mediante el método format().

El método format()

El método format() para cadenas de carácteres convierte el string brindado en una mejor presentación de salida en Python.

La sintaxis del método format() es:

template.format(p0, p1, ..., k0=v0, k1=v1, ...)

Donde, p0, p1,... son argumentos posicionales y, c0, c1,... son argumentos clave con valores v0, v1,... respectivamente.

template es una mezcla de código de formato con marcadores de posición (placeholders) para los argumentos.

Parámetros de format()

El método format() utiliza un número de parámetros, que pueden ser de dos tipos:

  • Parámetros posicionales: lista de parámetros que pueden ser accedidos mediante un indice dentro de llaves {indice}
  • Parámetros de clave: lista de parámetros clave=valor que pueden ser accedidos mediante una clave dentro de llaves {clave]

El método format() lee el tipo de argumentos pasados y los modifica de acuerdo a los códigos de formato definidos en el string.

Con parámetros posicionales podemos ver el siguiente ejemplo:

nombre = "Juan"
edad = 20
print("{0} y {1}".format(nombre, edad))

Mostrará el valor de nombre en la posición 0 y la de edad en la posición 1. El indice entre llaver representa el orden dentro de los parámetros de format().

Con parámetros de clave podemos ver el siguiente ejemplo:

print("{nombre} y {edad}".format(nombre = "Pedro", edad = 42))

Vemos algúnos ejemplos con código de formato para números.

1- Entero con ancho mínimo de 5 cifras, donde d significa entero y 5 implica las 5 cifras mínimas.

print("{:5d}".format(12))

Imprimirá:
   12
dejando 3 espacios antes

2- Podemos ver que ancho mínimo no funciona si el número es más ancho

print("{:2d}".format(1234))

Imprimirá:
1234
sin espacions antes

3- Ancho mínimo 8 cifras con 3 números decimales. En este caso se agrega .3f, donde 3 son las cifras decimales y f implica flotante

print("{:8.3f}".format(12.2346))

Imprimirá:
  12.235
con dos espacios antes

4- Entero con ancho mínimo de 5 cifras , completado con ceros, lo que se indica con el 0 delante del 5

print("{:05d}".format(12))

Imprimirá:
00012

5- Ancho mínimo de 8 cifras con 3 números decimales, completado con ceros

print("{:08.3f}".format(12.2346))

Imprimirá:
0012.235

6- Para mostrar un flotante con entero sin decimales, en {1:1.0f} el primer 1 es el indice ya que esre ejemplo tenemos dos parámetros, a ubicar en {0} y {1}

print("El número {0} se muesta sin decimales así {1:1.0f}".format(12.2346, 12.2346)) 

7- Número con formato y string

print("Esta aplicación es {0:d}% {1}!!".format(100, "segura"))    
# Lo mismo utilizando formato de porcentaje 
print("Esta aplicación es {0:.0%} {1}!".format(1, "segura"))
 

Para mostrar como un número binario

print("El {0} de {1} es {1:b}".format("binario", 100)) 

En este artículo estamos viendo le método format y no el manejo de strings, pero estudiemos unos ejemplos para ver como cambiar el símbolo de decimal.

Cambiar . por ,

   
#no se modificia el valor del string         
s = "1.4"
print(s.replace(".",","))
print(s)

#se modifica elvalor del string
s = s.replace(".",",")
print(s)

Anexo: Código para formateo de números

TipoSignificado
dEntero base diez
cCorrespondientes carácter Unicode
bFormato Binario
oFormato Octal
xFormato Hexadecimal (letras minúsculas)
XFormato Hexadecimal (letras mayúsculas)
eNotación exponencial. (e minúscula )
ENotación exponencial. (E mayúscula)
fMuestra numero de punto dijo (por defecto 6)
%Porcentaje. Multiplica por 100 y coloca % al final.

Creado: 09/01/2020  

Publicidad

| Volver a Python |

Comentarios

Para poder comentar debés registrarte e ingresar al sitio.