Python: unirse con nueva línea

88

En la consola de Python, cuando escribo:

>>> "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])

Da:

'I\nwould\nexpect\nmultiple\nlines'

Aunque esperaría ver tal salida:

I
would
expect
multiple
lines

¿Que me estoy perdiendo aqui?

TTT
fuente

Respuestas:

88

La consola está imprimiendo la representación, no la cadena en sí.

Si prefijas print, obtendrás lo que esperas.

Consulte esta pregunta para obtener detalles sobre la diferencia entre una cadena y la representación de la cadena. Súper simplificado, la representación es lo que escribirías en el código fuente para obtener esa cadena.

relajarse
fuente
41

Olvidaste printel resultado. Lo que se obtiene es el Pde RE(P)Ly no el resultado impreso.

En Py2.x deberías algo como

>>> print "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
I
would
expect
multiple
lines

y en Py3.X, imprimir es una función, por lo que debe hacer

print("\n".join(['I', 'would', 'expect', 'multiple', 'lines']))

Ahora esa fue la respuesta corta. Su intérprete de Python, que en realidad es un REPL, siempre muestra la representación de la cadena en lugar de la salida real que se muestra. Representación es lo que obtendría con la reprdeclaración

>>> print repr("\n".join(['I', 'would', 'expect', 'multiple', 'lines']))
'I\nwould\nexpect\nmultiple\nlines'
Abhijit
fuente
13

Necesita printobtener esa salida.
Deberías hacer

>>> x = "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
>>> x                   # this is the value, returned by the join() function
'I\nwould\nexpect\nmultiple\nlines'
>>> print x    # this prints your string (the type of output you want)
I
would
expect
multiple
lines
pradyunsg
fuente
4

Tienes que imprimirlo:

In [22]: "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
Out[22]: 'I\nwould\nexpect\nmultiple\nlines'

In [23]: print "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
I
would
expect
multiple
lines
raíz
fuente
4

Cuando lo imprime con esto print 'I\nwould\nexpect\nmultiple\nlines', obtendrá:

I
would
expect
multiple
lines

El \nes un carácter de nueva línea especialmente utilizado para el marcaje DE FIN DE TEXTO. Significa el final de la línea o el texto. Esta característica es compartida por muchos lenguajes como C, C ++, etc.

Sibi
fuente