Juan
Juan

Reputation: 3776

Python here document without newlines at top and bottom

What's the best way to have a here document, without newlines at the top and bottom? For example:

print '''
dog
cat
'''

will have newlines at the top and bottom, and to get rid of them I have to do this:

print '''dog
cat'''

which I find to be much less readable.

Upvotes: 60

Views: 54327

Answers (6)

NorthernDean
NorthernDean

Reputation: 11

Use a backslash at the start of the first line to avoid the first newline, and use the "end" modifier at the end to avoid the last:

    print ('''\
    dog
    cat
    ''', end='')

Upvotes: 1

user2622016
user2622016

Reputation: 6423

Add backslash \ at the end of unwanted lines:

 text = '''\
 cat
 dog\
 '''

It is somewhat more readable.

Upvotes: 40

Weeble
Weeble

Reputation: 17910

How about this?

print '''
dog
cat
'''[1:-1]

Or so long as there's no indentation on the first line or trailing space on the last:

print '''
dog
cat
'''.strip()

Or even, if you don't mind a bit more clutter before and after your string in exchange for being able to nicely indent it:

from textwrap import dedent

...

print dedent('''
    dog
    cat
    rabbit
    fox
''').strip()

Upvotes: 84

SingleNegationElimination
SingleNegationElimination

Reputation: 156158

use parentheses:

print (
'''dog
cat'''
)

Use str.strip()

print '''
dog
cat
'''.strip()

use str.join()

print '\n'.join((
    'dog',
    'cat',
    ))

Upvotes: 23

Tyler Eaves
Tyler Eaves

Reputation: 13121

Do you actually need the multi-line syntax? Why not just emded a newline?

I find print "dog\ncat" far more readable than either.

Upvotes: -4

NPE
NPE

Reputation: 500327

You could use strip():

print '''
dog
cat
'''.strip()

Upvotes: 7

Related Questions