Python - Partecipa con una nuova riga


92

Nella console Python, quando digito:

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

Dà:

'I\nwould\nexpect\nmultiple\nlines'

Anche se mi aspetto di vedere un risultato del genere:

I
would
expect
multiple
lines

Cosa mi manca qui?

Risposte:


90

La console sta stampando la rappresentazione, non la stringa stessa.

Se inserisci il prefisso print, otterrai ciò che ti aspetti.

Vedi questa domanda per i dettagli sulla differenza tra una stringa e la rappresentazione della stringa. Super semplificata, la rappresentazione è ciò che digiteresti nel codice sorgente per ottenere quella stringa.


42

Hai dimenticato printil risultato. Quello che si ottiene è l' Pin RE(P)Le non il risultato effettivo stampato.

In Py2.x dovresti quindi qualcosa di simile

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

e in Py3.X, print è una funzione, quindi dovresti farlo

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

Questa era la risposta breve. Il tuo interprete Python, che in realtà è un REPL, mostra sempre la rappresentazione della stringa anziché l'effettivo output visualizzato. La rappresentazione è ciò che otterresti con la reprdichiarazione

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

14

Devi printottenere quell'output.
Dovresti fare

>>> 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

4

Devi stamparlo:

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

4

Quando lo stampi con questo print 'I\nwould\nexpect\nmultiple\nlines', otterrai:

I
would
expect
multiple
lines

La \nè una nuova linea carattere appositamente utilizzati per la marcatura FINE TESTO. Significa la fine della riga o del testo. Questa caratteristica è condivisa da molti linguaggi come C, C ++ ecc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.