Python - Junte-se com uma nova linha

92

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?

TTT
fonte

Respostas:

90

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.

desanuviar
fonte
42

Você se esqueceu printdo resultado. O que você recebe é o Pno RE(P)Le 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 reprdeclaração

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

Você precisa para printobter 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
pradyunsg
fonte
4

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
raiz
fonte
4

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.

Sibi
fonte