Python - Rejoindre avec une nouvelle ligne

89

Dans la console Python, lorsque je tape:

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

Donne:

'I\nwould\nexpect\nmultiple\nlines'

Bien que je m'attends à voir une telle sortie:

I
would
expect
multiple
lines

Qu'est-ce que j'oublie ici?

TTT
la source

Réponses:

88

La console imprime la représentation, pas la chaîne elle-même.

Si vous préfixez avec print, vous obtiendrez ce que vous attendez.

Consultez cette question pour plus de détails sur la différence entre une chaîne et la représentation de la chaîne. Super-simplifiée, la représentation est ce que vous tapez dans le code source pour obtenir cette chaîne.

se détendre
la source
41

Vous avez oublié printle résultat. Ce que vous obtenez est Pdans RE(P)Let non le résultat imprimé réel.

Dans Py2.x, vous devriez donc quelque chose comme

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

et dans Py3.X, print est une fonction, vous devriez donc faire

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

C'était la réponse courte. Votre interpréteur Python, qui est en fait un REPL, affiche toujours la représentation de la chaîne plutôt que la sortie réelle affichée. La représentation est ce que vous obtiendriez avec la reprdéclaration

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

Vous devez printobtenir cette sortie.
Tu devrais faire

>>> 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
la source
4

Vous devez l'imprimer:

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
racine
la source
4

Lorsque vous l'imprimez avec ceci, print 'I\nwould\nexpect\nmultiple\nlines'vous obtiendrez:

I
would
expect
multiple
lines

Le \nest un caractère de nouvelle ligne spécialement utilisé pour marquer FIN-DE-TEXTE. Cela signifie la fin de la ligne ou du texte. Cette caractéristique est partagée par de nombreux langages comme C, C ++ etc.

Sibi
la source