2012-08-24 9 views
44

Leí que para suprimir la nueva línea después de una declaración de impresión puede poner una coma después del texto. El ejemplo here se parece a Python 2. ¿Cómo se puede hacer en Python 3?¿Cómo puedo suprimir la nueva línea después de una declaración de impresión?

Por ejemplo:

for item in [1,2,3,4]: 
    print(item, " ") 

lo que debe cambiar para que los imprime en la misma línea?

+1

Se podía hacer 'print ('' .join ([str (i) para i en [1, 2, 3,] 4]))' ' –

+0

de impresión (* [1, 2, 3, 4]) 'funciona para el caso común de imprimir una secuencia separada de espacio –

Respuesta

82

La pregunta es: "¿Cómo puede hacerse en Python 3?"

Usar este constructo con Python 3.x:

for item in [1,2,3,4]: 
    print(item, " ", end="") 

Esto generará:

1 2 3 4 

Consulte esto Python doc para más información:

Old: print x,   # Trailing comma suppresses newline 
New: print(x, end=" ") # Appends a space instead of a newline 

-

Aparte:

, además, la función de print() también ofrece el parámetro sep que permite a uno especificar el número de elementos individuales para ser impreso debe ser separado. Por ejemplo,

In [21]: print('this','is', 'a', 'test') # default single space between items 
this is a test 

In [22]: print('this','is', 'a', 'test', sep="") # no spaces between items 
thisisatest 

In [22]: print('this','is', 'a', 'test', sep="--*--") # user specified separation 
this--*--is--*--a--*--test 
+1

¡Perfecto! Entonces end = "" simplemente anula el carácter de nueva línea. – Ci3

+0

@ChrisHarris Vea la actualización con la cita de los documentos, por lo que está reemplazando la nueva línea con '" "' (la cadena vacía) – Levon

+1

Muy útil, ¡gracias! – Ci3

4

de impresión no la transición de estado funcionando hasta Python 3.0. Si está utilizando Python mayor entonces se puede suprimir la nueva línea con una coma detrás de este modo:

print "Foo %10s bar" % baz, 
+4

La pregunta específica sobre el uso de Python 3. Este –

0

Debido a Python 3 función print() permite que el extremo = "" definición, que satisface la mayoría de los temas.

En mi caso, quería PrettyPrint y me frustró que este módulo no se haya actualizado de manera similar. Así lo hice hacer lo que quería:

from pprint import PrettyPrinter 

class CommaEndingPrettyPrinter(PrettyPrinter): 
    def pprint(self, object): 
     self._format(object, self._stream, 0, 0, {}, 0) 
     # this is where to tell it what you want instead of the default "\n" 
     self._stream.write(",\n") 

def comma_ending_prettyprint(object, stream=None, indent=1, width=80, depth=None): 
    """Pretty-print a Python object to a stream [default is sys.stdout] with a comma at the end.""" 
    printer = CommaEndingPrettyPrinter(
     stream=stream, indent=indent, width=width, depth=depth) 
    printer.pprint(object) 

Ahora, cuando lo haga:

comma_ending_prettyprint(row, stream=outfile) 

consigo lo que quería (sustituto de lo que quiere - su experiencia puede variar)

3

Código para Python 3.6.1

print("This first text and " , end="") 

print("second text will be on the same line") 

print("Unlike this text which will be on a newline") 

salida

>>> 
This first text and second text will be on the same line 
Unlike this text which will be on a newline 
+0

aclaró cómo el parámetro end = "" afectaría a la línea siguiente, pero no a la siguiente, ¡gracias! –

Cuestiones relacionadas