HOWTO · Python

Imprimir valores sin espacios entre ellos en Python

Aprenda a imprimir valores sin espacios entre ellos en Python: use el parámetro sep de print(), f-strings, str.format(), el formato con %, la concatenación y la sustitución con Template de cadenas.

En esta página

Cuando pasa varios argumentos a la función print() separados por comas, print() los une con un espacio por defecto, lo que a veces conduce a espacios innecesarios entre los valores. Afortunadamente, Python ofrece varias alternativas que le ayudan a controlar este espaciado con exactitud.

En esta guía, aprenderá los diferentes métodos para imprimir sin espacios entre valores en Python. Cada método se muestra con el mismo ejemplo continuo, que parte de la forma con comas siguiente:

x = 10
print('The number of mangoes I have is "', x, '"')

Salida:

The number of mangoes I have is " 10 "

Observe los espacios innecesarios entre el número 10 y las comillas dobles que lo rodean: uno proviene de cada coma. El objetivo de cada método siguiente es eliminar este espaciado excesivo imprimiendo los mismos valores.

Use el formato de cadenas con el signo de módulo % para imprimir valores sin espacios entre ellos en Python

El signo %, también conocido como operador de formato de cadenas o de interpolación, es el método de formato más antiguo de Python. Un marcador como %d dentro de la cadena marca dónde va un valor, y el valor tras el operador % lo reemplaza, de modo que no se añade ningún separador en ninguna parte:

x = 10
print('The number of mangoes I have is "%d"' % x)

Salida:

The number of mangoes I have is "10"

Aquí, %d es el marcador de un entero. Cuando se construye la cadena, se reemplaza por el valor de x, que es 10, y el texto impreso toca las comillas directamente. Este estilo sigue funcionando en Python 3, pero el código más nuevo suele preferir str.format() o las f-strings.

Use el formato de cadenas con la función str.format() para imprimir valores sin espacios entre ellos en Python

Con str.format(), las llaves {} dentro de la cadena marcan los lugares donde se sustituyen los valores. El método se introdujo en Python 3 y maneja el formato complejo de manera eficiente; como la cadena terminada es un único argumento para print(), no aparece ningún separador:

x = 10
print('The number of mangoes I have is "{}"'.format(x))

Salida:

The number of mangoes I have is "10"

El marcador {} se encuentra dentro de las comillas dobles y se reemplaza por el valor de x cuando se muestra la cadena. Para código nuevo, se recomienda str.format() en lugar del antiguo operador %.

Use la concatenación de cadenas para imprimir valores sin espacios entre ellos en Python

El operador +, el operador de concatenación de cadenas, une cadenas de extremo a extremo y no añade nada entre ellas, lo que lo convierte en una alternativa directa a la separación por comas:

x = 10
print('The number of mangoes I have is "' + str(x) + '"')

Salida:

The number of mangoes I have is "10"

La concatenación solo funciona entre cadenas, por lo que el entero x se convierte primero con str(). Las piezas forman entonces una sola cadena — 'The number of mangoes I have is "', '10' y '"' — y print() la imprime tal cual.

Use la f-string para el formato de cadenas para imprimir valores sin espacios entre ellos en Python

Python 3.6 introdujo las f-strings, que incrustan expresiones directamente dentro de un literal de cadena. También son más rápidas que los otros dos métodos de formato anteriores, porque los valores se evalúan a medida que se construye la cadena:

x = 10
print(f'The number of mangoes I have is "{x}"')

Salida:

The number of mangoes I have is "10"

El prefijo f antes de la cadena la convierte en una f-string, y el {x} en su interior se reemplaza por el valor de x cuando se ejecuta el código. Como la variable se encuentra exactamente donde debe aparecer su texto, el resultado es conciso, legible y libre de espacios adicionales.

Use el parámetro sep de la instrucción print para imprimir valores sin espacios entre ellos en Python

Si desea mantener los argumentos separados por comas, cambie lo que print() pone entre ellos. El parámetro sep, disponible en Python 3, es el separador que se inserta entre los argumentos; por defecto es un solo espacio:

x = 10
print('The number of mangoes I have is "', x, '"', sep="")

Salida:

The number of mangoes I have is "10"

Establecer sep en la cadena vacía "" le dice a print() que una las partes — el texto hasta la comilla de apertura, el valor de x y la comilla de cierre — sin nada entre ellas. Este es el cambio más pequeño respecto a la forma original con comas: los argumentos permanecen iguales y solo se elimina el separador.

Interpolación de cadenas usando cadenas Template para imprimir valores sin espacios entre ellos en Python

La clase string.Template de Python interpola valores en una cadena de plantilla: los marcadores que comienzan con $ se sustituyen por los valores que usted proporciona, y no se añade nada a su alrededor:

from string import Template

x = 10
template = Template('The number of mangoes I have is "$x"')
result = template.substitute(x=x)
print(result)

Salida:

The number of mangoes I have is "10"

Aquí, $x es el marcador del valor de x. Llamar a template.substitute(x=x) lo reemplaza por 10, y print(result) imprime la cadena terminada exactamente — The number of mangoes I have is "10", sin comillas ni espacios añadidos. Las cadenas Template se usan con mayor frecuencia cuando la propia plantilla proviene de un usuario o de un archivo, porque sus reglas de sustitución son deliberadamente simples.

Conclusión

Los espacios del ejemplo original provienen del propio print(): con argumentos separados por comas, inserta el separador sep, que por defecto es un espacio. Puede eliminarlos cambiando el separador (sep=""), construyendo la cadena completa antes de imprimir (con una f-string, str.format(), el operador %, concatenación o un string.Template), o combinando ambas ideas. Para el código cotidiano, la f-string es la opción más legible, mientras que sep="" es la corrección más rápida cuando los argumentos ya están en su lugar.