Como “Printar” Sem Nova Linha ou Espaço em Python

Ana Maria Gomes
5 minutos de leitura

Conteúdos do tutorial

Ao trabalhar com Python, você pode se deparar com uma situação em que precisa printar vários itens consecutivamente sem adicionar automaticamente uma nova linha ou espaço entre eles. Isso é um requisito comum para formatar a saída de uma maneira específica. Neste post, vamos explorar como alcançar isso usando a função print do Python.

Imprimindo Sem Nova Linha

No Python 3, a função print vem com um recurso muito útil que permite controlar o que é impresso no final da instrução. Por padrão, print adiciona um caractere de nova linha (\n) após cada chamada, mas você pode mudar esse comportamento com o parâmetro end.

Veja como você pode imprimir pontos consecutivamente sem uma nova linha:

print('.', end='')
print('.', end='')
print('.', end='')
print('.', end='')

Esse código produzirá .... sem nenhuma nova linha entre eles.

Printar Sem Espaços Entre Argumentos

Às vezes, você pode querer printar vários argumentos sem espaços entre eles. A função print tem outro parâmetro chamado sep, que define o separador entre os argumentos. Por padrão, sep é um caractere de espaço, mas você pode definí-lo como uma string vazia para remover os espaços:

print('a', 'b', 'c', sep='')
Testar

Isso resultará na saída abc sem espaços.

Esvaziando o Buffer de Saída

Em alguns casos, especialmente quando você está lidando com dados em tempo real ou um fluxo lento, você pode precisar garantir que a saída seja esvaziada imediatamente. Você pode fazer isso definindo o parâmetro flush como True:

print('.', end='', flush=True)

Compatibilidade com Python 2

Se você está trabalhando com Python 2.6 ou 2.7, ainda pode imprimir sem uma nova linha ou espaço. Você pode importar a função print do Python 3:

from __future__ import print_function

Após essa importação, você pode usar os mesmos parâmetros end e sep como no Python 3. No entanto, a palavra-chave flush não está disponível no Python 2.

Alternativamente, você pode usar sys.stdout.write():

import sys
sys.stdout.write('.')

E para esvaziar a saída:

sys.stdout.flush()

Usando Vírgulas no Python 2

Nas versões anteriores do Python, você pode simplesmente adicionar uma vírgula no final da instrução de impressão para evitar a nova linha:

for i in range(10):
    print i,
else:
    print

Isso imprimirá números de 0 a 9 na mesma linha, separados por espaços.

Substituição ao Estilo Printf

Para aqueles que procuram substituição ao estilo printf, o Python oferece uma maneira de formatar strings usando o operador %:

strings = ["one", "two", "three"]
for i in range(3):
    print "Item %d: %s" % (i, strings[i])

E se você quiser imprimir um caractere várias vezes, você pode multiplicar uma string:

print "." * 10
Testar

Isso irá printar dez pontos consecutivamente.

Resumo

Neste post, cobrimos como printar itens em Python sem adicionar automaticamente uma nova linha ou espaço. Usando os parâmetros end e sep na função print, você pode controlar o formato da saída. Lembre-se de usar flush=True se precisar esvaziar o buffer de saída imediatamente. Para usuários do Python 2, importar a função print do Python 3 ou usar sys.stdout.write() são opções viáveis. Com essas técnicas, você pode formatar sua saída exatamente da maneira que precisa.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse:
Conteúdos do tutorial