Python – Únete con nueva línea

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?

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

Si prefieres 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. Super simplificada, la representación es lo que escribiría en el código fuente para obtener esa cadena.

Se te olvidó print el resultado. Lo que obtiene es la P en RE(P)L y no el resultado real impreso.

En Py2.x deberías algo así como

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

y en Py3.X, imprimir es una función, así que debes 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 mostrada. Representación es lo que obtendría con la statement repr .

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

Necesitas print para obtener 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 

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 

Cuando lo imprima con esta print 'I\nwould\nexpect\nmultiple\nlines' obtendrá:

 I would expect multiple lines 

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