No console Python, quando digito:
>>> "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
Dá:
'I\nwould\nexpect\nmultiple\nlines'
Embora eu esperasse ver esse resultado:
I
would
expect
multiple
lines
O que estou perdendo aqui?
O console está imprimindo a representação, não a própria string.
Se você prefixar com print
, obterá o que espera.
Veja esta questão para detalhes sobre a diferença entre uma string e a representação da string. Super-simplificado, a representação é o que você digitaria no código-fonte para obter essa string.
Você se esqueceu print
do resultado. O que você recebe é o P
no RE(P)L
e não o resultado real impresso.
Em Py2.x você deve algo como
>>> print "\n".join(['I', 'would', 'expect', 'multiple', 'lines'])
I
would
expect
multiple
lines
e em Py3.X, imprimir é uma função, então você deve fazer
print("\n".join(['I', 'would', 'expect', 'multiple', 'lines']))
Essa foi a resposta curta. Seu interpretador Python, que na verdade é um REPL, sempre exibe a representação da string em vez da saída real exibida. Representação é o que você obteria com a repr
declaração
>>> print repr("\n".join(['I', 'would', 'expect', 'multiple', 'lines']))
'I\nwould\nexpect\nmultiple\nlines'
Você precisa para print
obter essa saída.
Você deveria fazer
>>> 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
Você tem que imprimir:
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
Ao imprimir com isso, print 'I\nwould\nexpect\nmultiple\nlines'
você obterá:
I
would
expect
multiple
lines
O \n
é um novo caractere de linha especialmente usado para marcar END-OF-TEXT. Isso significa o fim da linha ou texto. Essas características são compartilhadas por muitas linguagens como C, C ++ etc.