Python – Join with newline

Question:

In the Python console, when I type:

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

Gives:

'Inwouldnexpectnmultiplenlines'

Though I’d expect to see such an output:

I
would
expect
multiple
lines

What am I missing here?

Asked By: TTT

||

Answers:

You have to print it:

In [22]: "n".join(['I', 'would', 'expect', 'multiple', 'lines'])
Out[22]: 'Inwouldnexpectnmultiplenlines'

In [23]: print "n".join(['I', 'would', 'expect', 'multiple', 'lines'])
I
would
expect
multiple
lines
Answered By: root

You forgot to print the result. What you get is the P in RE(P)L and not the actual printed result.

In Py2.x you should so something like

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

and in Py3.X, print is a function, so you should do

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

Now that was the short answer. Your Python Interpreter, which is actually a REPL, always displays the representation of the string rather than the actual displayed output. Representation is what you would get with the repr statement

>>> print repr("n".join(['I', 'would', 'expect', 'multiple', 'lines']))
'Inwouldnexpectnmultiplenlines'
Answered By: Abhijit

The console is printing the representation, not the string itself.

If you prefix with print, you’ll get what you expect.

See this question for details about the difference between a string and the string’s representation. Super-simplified, the representation is what you’d type in source code to get that string.

Answered By: unwind

When you print it with this print 'Inwouldnexpectnmultiplenlines' you would get:

I
would
expect
multiple
lines

The n is a new line character specially used for marking END-OF-TEXT. It signifies the end of the line or text. This characteristics is shared by many languages like C, C++ etc.

Answered By: Sibi

You need to print to get that output.
You should do

>>> x = "n".join(['I', 'would', 'expect', 'multiple', 'lines'])
>>> x                   # this is the value, returned by the join() function
'Inwouldnexpectnmultiplenlines'
>>> print x    # this prints your string (the type of output you want)
I
would
expect
multiple
lines
Answered By: pradyunsg

The repr() function returns a printable representation of the given object and is crucial for evalStr() or exec in Python; for example you want to get out the Zen of Python:

eng.execString('from this import *');
println('import this:'+CRLF+
  stringReplace(eng.EvalStr('repr("".join([d.get(c,c) for c in s]))'),'n',CRLF,[rfReplaceAll]));
Answered By: Max Kleiner
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.