Interpolación de cadenas de Python con el operador de porcentaje (%)

I

Hay varias formas diferentes de formatear cadenas en Python, una de las cuales se realiza mediante el % operador, que se conoce como el operador de formato de cadena (o interpolación). En este artículo, le mostraremos cómo usar este operador para construir cadenas con una cadena de plantilla y variables que contienen sus datos.

El operador

Esta forma de trabajar con texto se incluye en Python desde el principio, y también se conoce como formato de estilo C, ya que se origina en el lenguaje de programación C. Otra descripción es el formato posicional simple.

los % El operador le dice al intérprete de Python que formatee una cadena usando un conjunto dado de variables, encerradas en una tupla, siguiendo al operador. Un ejemplo muy simple de esto es el siguiente:

'%s is smaller than %s' % ('one', 'two')

El intérprete de Python sustituye la primera aparición de %s en la cadena por la cadena dada “uno”, y el segundo %s por la cadena “dos”. Estas %s Las cadenas son en realidad marcadores de posición en nuestra cadena de “plantilla” e indican que las cadenas se colocarán allí.

Como primer ejemplo, a continuación mostramos cómo imprimir un valor de cadena y un valor flotante usando Python REPL:

>>> print("Mr. %s, the total is %.2f." % ("Jekyll", 15.53))
'Mr. Jekyll, the total is 15.33.'

Como el %s es un marcador de posición para cadenas, %f es un marcador de posición para números de punto flotante. El “.2” antes del f es lo que indica cuántos dígitos queremos que se muestren después del punto decimal.

Estos son solo dos ejemplos simples de lo que es posible, y se admiten muchos más tipos de marcadores de posición. Aquí está la lista completa de tipos de marcadores de posición con más detalle:

%C

Este marcador de posición representa un solo carácter.

>>> print("The character after %c is %c." % ("B", "C"))
The character after B is C.

Si proporciona más de un carácter como variable aquí, se generará una excepción.

% s

Este marcador de posición utiliza la conversión de cadenas a través de str() antes de formatear. Entonces, cualquier valor que se pueda convertir en una cadena a través de str() se puede utilizar aquí.

>>> place = "New York"
>>> print("Welcome to %s!" % place)
Welcome to New York!

Aquí solo tenemos un único elemento para usar en nuestro formato de cadena y, por lo tanto, no estamos obligados a encerrar el elemento en una tupla como en los ejemplos anteriores.

% i y% d

Estos marcadores representan un entero decimal con signo.

>>> year = 2019
>>> print("%i will be a perfect year." % year)
2019 will be a perfect year.

Dado que este marcador de posición espera un decimal, se convertirá en uno si en su lugar se proporciona un valor de punto flotante.

% u

Este marcador de posición representa un entero decimal sin signo.

% o

Este marcador de posición representa un entero octal.

>>> number = 15
>>> print("%i in octal is %o" % (number, number))
15 in octal is 17
%X

Representa un entero hexadecimal con letras minúsculas (af).

>>> number = 15
>>> print("%i in hex is %02x" % (number, number))
15 in hex is 0f

Al usar el prefijo “02” en nuestro marcador de posición, le estamos diciendo a Python que imprima una cadena hexadecimal de dos caracteres.

%X

Representa un entero hexadecimal con letras mayúsculas (AF).

>>> number = 15
>>> print("%i in hex is %04X" % (number, number))
15 in hex is 000F

Y como en el ejemplo anterior, al usar el prefijo “04” en nuestro marcador de posición, le estamos diciendo a Python que imprima una cadena hexadecimal de cuatro caracteres.

%mi

Representa una notación exponencial con una “e” minúscula.

%MI

Representa una notación exponencial con una “e” mayúscula.

%F

Representa un número real de coma flotante.

>>> price = 15.95
>>> print("the price is %.2f" % price)
the price is 15.95
%gramo

La versión más corta de %f y %e.

%GRAMO

La versión más corta de %f y %E.

Los marcadores de posición que se muestran arriba le permiten formatear cadenas especificando tipos de datos en sus plantillas. Sin embargo, estas no son las únicas características del operador de interpolación. En la siguiente subsección veremos cómo podemos rellenar nuestras cadenas con espacios usando el % operador.

Alinear la salida

Hasta ahora, solo hemos mostrado cómo formatear cadenas de texto especificando marcadores de posición simples. Con la ayuda de un valor numérico adicional, puede definir el espacio total que se reservará a cada lado de una variable en la cadena de salida.

Como ejemplo, el valor de %10s reserva 10 caracteres, con el espacio adicional en el lado izquierdo del marcador de posición, y un valor de %-10s pone cualquier espacio adicional a la derecha del placholder. El carácter de relleno único es un espacio y no se puede cambiar.

>>> place = "London"
>>> print ("%10s is not a place in France" % place)  # Pad to the left
      London is not a place in France
>>> print ("%-10s is not a place in France" % place) # Pad to the right
London     is not a place in France

Tratar con números funciona de la misma manera:

>>> print ("The postcode is %10d." % 25000)    # Padding on the left side
The postcode is      25000.
>>> print ("The postcode is %-10d." % 25000)   # Padding on the right side
The postcode is 25000     .

Truncar cadenas y redondear números es la contraparte del relleno. Eche un vistazo a Redondear números en Python para aprender más sobre las trampas que se esconden aquí.

Conclusión

En este artículo vimos cómo el operador de interpolación (también conocido como formateo) es una forma poderosa de formatear cadenas, lo que le permite especificar el tipo de datos, la precisión del punto flotante e incluso el espaciado / relleno.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad