HOWTO · Python

Imprimir valores sem espaços intermediários em Python

Saiba como imprimir valores sem espaços entre eles em Python: use o parâmetro sep de print(), f-strings, str.format(), a formatação com %, a concatenação e a substituição Template de strings.

Nesta página

Quando você passa vários argumentos para a função print() separados por vírgulas, print() os une com um espaço por padrão, o que às vezes leva a espaços desnecessários entre os valores. Felizmente, o Python oferece várias alternativas que ajudam você a controlar esse espaçamento com exatidão.

Neste guia, você aprenderá os diferentes métodos para imprimir sem espaços entre valores em Python. Cada método é mostrado no mesmo exemplo contínuo, que parte da forma com vírgulas abaixo:

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

Resultado:

The number of mangoes I have is " 10 "

Observe os espaços desnecessários entre o número 10 e as aspas duplas que o cercam: um vem de cada vírgula. O objetivo de cada método abaixo é remover esse espaçamento excessivo imprimindo os mesmos valores.

Use a formatação de strings com o sinal de módulo % para imprimir valores sem espaços entre eles em Python

O sinal %, também conhecido como operador de formatação de strings ou de interpolação, é o método de formatação mais antigo no Python. Um marcador como %d dentro da string marca onde vai um valor, e o valor após o operador % o substitui, de modo que nenhum separador é adicionado em lugar algum:

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

Resultado:

The number of mangoes I have is "10"

Aqui, %d é o marcador para um inteiro. Quando a string é construída, ele é substituído pelo valor de x, que é 10, e o texto impresso toca as aspas diretamente. Esse estilo ainda funciona no Python 3, mas o código mais novo geralmente prefere str.format() ou f-strings.

Use a formatação de strings com a função str.format() para imprimir valores sem espaços entre eles em Python

Com str.format(), as chaves {} dentro da string marcam os pontos onde os valores são substituídos. O método foi introduzido no Python 3 e lida com formatação complexa de forma eficiente; como a string finalizada é um único argumento para print(), nenhum separador aparece:

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

Resultado:

The number of mangoes I have is "10"

O marcador {} fica dentro das aspas duplas e é substituído pelo valor de x quando a string é exibida. Para código novo, recomenda-se str.format() em vez do antigo operador %.

Use a concatenação de strings para imprimir valores sem espaços entre eles em Python

O operador +, o operador de concatenação de strings, une strings de ponta a ponta e não adiciona nada entre elas, o que o torna uma alternativa direta à separação por vírgulas:

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

Resultado:

The number of mangoes I have is "10"

A concatenação só funciona entre strings, então o inteiro x é convertido primeiro com str(). As peças então formam uma única string — 'The number of mangoes I have is "', '10' e '"' — e print() a imprime como está.

Use a f-string para formatação de strings para imprimir valores sem espaços entre eles em Python

O Python 3.6 introduziu as f-strings, que incorporam expressões diretamente dentro de um literal de string. Elas também são mais rápidas do que os outros dois métodos de formatação acima, porque os valores são avaliados à medida que a string é construída:

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

Resultado:

The number of mangoes I have is "10"

O prefixo f antes da string a transforma em uma f-string, e o {x} dentro dela é substituído pelo valor de x quando o código é executado. Como a variável fica exatamente onde seu texto deve aparecer, o resultado é conciso, legível e livre de espaços extras.

Use o parâmetro sep da instrução print para imprimir valores sem espaços entre eles em Python

Se você quiser manter os argumentos separados por vírgulas, altere o que print() coloca entre eles. O parâmetro sep, disponível no Python 3, é o separador inserido entre os argumentos; por padrão, é um único espaço:

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

Resultado:

The number of mangoes I have is "10"

Definir sep como a string vazia "" diz ao print() para unir as partes — o texto até a aspa de abertura, o valor de x e a aspa de fechamento — sem nada entre elas. Esta é a menor alteração na forma original com vírgulas: os argumentos permanecem os mesmos e apenas o separador é removido.

Interpolação de strings usando strings Template para imprimir valores sem espaços entre eles em Python

A classe string.Template do Python interpola valores em uma string de modelo: marcadores que começam com $ são substituídos pelos valores que você fornece, e nada é adicionado ao redor deles:

from string import Template

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

Resultado:

The number of mangoes I have is "10"

Aqui, $x é o marcador para o valor de x. Chamar template.substitute(x=x) o substitui por 10, e print(result) imprime a string finalizada exatamente — The number of mangoes I have is "10", sem aspas ou espaços adicionados. Strings Template são usadas com mais frequência quando o próprio modelo vem de um usuário ou de um arquivo, porque suas regras de substituição são deliberadamente simples.

Conclusão

Os espaços no exemplo original vêm do próprio print(): com argumentos separados por vírgulas, ele insere o separador sep, que por padrão é um espaço. Você pode removê-los alterando o separador (sep=""), construindo a string inteira antes de imprimir (com uma f-string, str.format(), o operador %, concatenação ou um string.Template), ou combinando as duas ideias. Para o código do dia a dia, a f-string é a opção mais legível, enquanto sep="" é a correção mais rápida quando os argumentos já estão no lugar.