111 votes

Python - Joindre avec une nouvelle ligne

Dans la console Python, lorsque je tape :

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

Donne :

'I\nwould\nexpect\nmultiple\nlines'

Bien que je m'attende à voir un tel résultat :

I
would
expect
multiple
lines

Qu'est-ce que je rate ici ?

96voto

unwind Points 181987

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.

Voir cette question pour plus de détails sur la différence entre une chaîne et sa représentation. En simplifiant à l'extrême, la représentation est ce que vous tapez dans le code source pour obtenir cette chaîne.

47voto

Abhijit Points 24122

Vous avez oublié de print le résultat. Ce que vous obtenez est le P en RE(P)L et non le résultat réel imprimé.

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, donc vous devez 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 de caractères plutôt que la sortie réellement affichée. La représentation est ce que vous obtiendriez avec la fonction repr déclaration

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

16voto

Schoolboy Points 3489

Vous devez print pour obtenir cette sortie.
Vous devriez 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

6voto

root Points 14514

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

4voto

Sibi Points 10857

Lorsque vous l'imprimez avec cette print 'I\nwould\nexpect\nmultiple\nlines' vous obtiendriez :

I
would
expect
multiple
lines

El \n est un caractère de nouvelle ligne spécialement utilisé pour marquer la FIN DU TEXTE. Il signifie la fin de la ligne ou du texte. Cette caractéristique est partagée par de nombreux langages comme le C, le C++, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X