Python here document without newlines at top and bottom
Question:
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.
Answers:
You could use strip()
:
print '''
dog
cat
'''.strip()
Do you actually need the multi-line syntax? Why not just emded a newline?
I find print “dogncat” far more readable than either.
use parentheses:
print (
'''dog
cat'''
)
Use str.strip()
print '''
dog
cat
'''.strip()
use str.join()
print 'n'.join((
'dog',
'cat',
))
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()
Add backslash at the end of unwanted lines:
text = '''
cat
dog
'''
It is somewhat more readable.
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='')
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.
You could use strip()
:
print '''
dog
cat
'''.strip()
Do you actually need the multi-line syntax? Why not just emded a newline?
I find print “dogncat” far more readable than either.
use parentheses:
print (
'''dog
cat'''
)
Use str.strip()
print '''
dog
cat
'''.strip()
use str.join()
print 'n'.join((
'dog',
'cat',
))
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()
Add backslash at the end of unwanted lines:
text = '''
cat
dog
'''
It is somewhat more readable.
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='')