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.