How do I keep Python print from adding newlines or spaces?
import sys
sys.stdout.write('h')
sys.stdout.flush()
sys.stdout.write('m')
sys.stdout.flush()
You need to call sys.stdout.flush()
because otherwise it will hold the text in a buffer and you won't see it.
How to print without a newline or space
In Python 3, you can use the sep=
and end=
parameters of the print
function:
To not add a newline to the end of the string:
print('.', end='')
To not add a space between all the function arguments you want to print:
print('a', 'b', 'c', sep='')
You can pass any string to either parameter, and you can use both parameters at the same time.
If you are having trouble with buffering, you can flush the output by adding flush=True
keyword argument:
print('.', end='', flush=True)
Python 2.6 and 2.7
From Python 2.6 you can either import the print
function from Python 3 using the __future__
module:
from __future__ import print_function
which allows you to use the Python 3 solution above.
However, note that the flush
keyword is not available in the version of the print
function imported from __future__
in Python 2; it only works in Python 3, more specifically 3.3 and later. In earlier versions you'll still need to flush manually with a call to sys.stdout.flush()
. You'll also have to rewrite all other print statements in the file where you do this import.
Or you can use sys.stdout.write()
import sys
sys.stdout.write('.')
You may also need to call
sys.stdout.flush()
to ensure stdout
is flushed immediately.
Python: avoid new line with print command
In Python 3.x, you can use the end
argument to the print()
function to prevent a newline character from being printed:
print("Nope, that is not a two. That is a", end="")
In Python 2.x, you can use a trailing comma:
print "this should be",
print "on the same line"
You don't need this to simply print a variable, though:
print "Nope, that is not a two. That is a", x
Note that the trailing comma still results in a space being printed at the end of the line, i.e. it's equivalent to using end=" "
in Python 3. To suppress the space character as well, you can either use
from __future__ import print_function
to get access to the Python 3 print function or use sys.stdout.write()
.
How to print variables without spaces between values
Don't use print ...,
(with a trailing comma) if you don't want spaces. Use string concatenation or formatting.
Concatenation:
print 'Value is "' + str(value) + '"'
Formatting:
print 'Value is "{}"'.format(value)
The latter is far more flexible, see the str.format()
method documentation and the Formatting String Syntax section.
You'll also come across the older %
formatting style:
print 'Value is "%d"' % value
print 'Value is "%d", but math.pi is %.2f' % (value, math.pi)
but this isn't as flexible as the newer str.format()
method.
In Python 3.6 and newer, you'd use a formatted string (f-string):
print(f"Value is {value}")
Why is there an extra space in between a variable and punctuation in a string? Python
You can append string with +
.
print ("Right... So your name is", name + ".")
Output:
Right... So your name is Raven.
how to avoid space on newline while joining a list
There's a simple enough solution: replace \n[space]
with \n
. That way all spaces are left alone and only string replaced is \n[space]
with newline without space
>>> newContents = ['The', 'crazy', 'panda', 'walked', 'to', 'the', 'Maulik', 'and', 'then', 'picked.', 'A', 'nearby', 'Ankur', 'was\n', 'unaffected', 'by', 'these', 'events.\n']
>>> print(' '.join(newContents).replace('\n ', '\n'))
The crazy panda walked to the Maulik and then picked. A nearby Ankur was
unaffected by these events.
Python \n gives two spaces in between output and \t gives one
python's built-in print function has '\n' as end character implicitly.
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
:Print objects to the text stream file, separated by sep and followed by end. sep, end, file and flush, if present, must be given as keyword arguments
So, every time you run print()
there is a '\n
' character that gets printed implicitly unless you override the behavior by passing end=
to it. (like end=''
for instance)
Related Topics
Multi Platform Portable Python
Python Threading with Queue: How to Avoid to Use Join
Scheduling a Regular Event: Cron/Cron Alternatives (Including Celery)
Construct Pandas Dataframe from Items in Nested Dictionary
Creating a JSON Response Using Django and Python
Nested Defaultdict of Defaultdict
What's the Best Way to Parse a JSON Response from the Requests Library
How to Parse a Yaml File in Python
Differencebetween a String and a Byte String
Problems Adding Path and Calling External Program from Python
Check If One Package Is Installed in My System with Python
Get Spotify Currently Playing Track
"Ssl Module in Python Is Not Available" When Installing Package with Pip3
How to Create a Zip Archive of a Directory