How to Print Without a Newline or Space

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.

how print in python loop with space and without new line

Try this:

num = [4 , 2]
for item in num:
for i in range(item):
print(item, end=" ")
print()

Edit:

I think it's overcomplicated for a problem like this, but you can try (it shouldn't print extra space at the end):

num = [4 , 2]
for item in num:
for i in range(item):
if item - 1 == i:
print(item)
else:
print(item, end=" ")

It prints an item with a new line when it's the last number in the second loop otherwise it prints the number with a space.

Printing without newline (print 'a',) prints a space, how to remove?

There are a number of ways of achieving your result. If you're just wanting a solution for your case, use string multiplication as @Ant mentions. This is only going to work if each of your print statements prints the same string. Note that it works for multiplication of any length string (e.g. 'foo' * 20 works).

>>> print 'a' * 20
How to Print Without a Newline or SpaceHow to Print Without a Newline or Spaceaaaa

If you want to do this in general, build up a string and then print it once. This will consume a bit of memory for the string, but only make a single call to print. Note that string concatenation using += is now linear in the size of the string you're concatenating so this will be fast.

>>> for i in xrange(20):
... s += 'a'
...
>>> print s
How to Print Without a Newline or SpaceHow to Print Without a Newline or Spaceaaaa

Or you can do it more directly using sys.stdout.write(), which print is a wrapper around. This will write only the raw string you give it, without any formatting. Note that no newline is printed even at the end of the 20 as.

>>> import sys
>>> for i in xrange(20):
... sys.stdout.write('a')
...
How to Print Without a Newline or SpaceHow to Print Without a Newline or Spaceaaaa>>>

Python 3 changes the print statement into a print() function, which allows you to set an end parameter. You can use it in >=2.6 by importing from __future__. I'd avoid this in any serious 2.x code though, as it will be a little confusing for those who have never used 3.x. However, it should give you a taste of some of the goodness 3.x brings.

>>> from __future__ import print_function
>>> for i in xrange(20):
... print('a', end='')
...
How to Print Without a Newline or SpaceHow to Print Without a Newline or Spaceaaaa>>>

How to Print in Python 2.7 without newline without buffering

Include this at the beginning of your file:

from __future__ import print_function

Then you can use both end and flush named parameters as if you were on Python 3. It seens you are missing the flush parameter:

print("We're doing something...",end='', flush=True)

If you can't or would not like to do that for some reason, you should end your legacy print statement with a sole comma. If you need the partial line to be printed, then you have to manually call sys.stdout.flush() soon after printing:

 print "We're doing something...",
sys.stdout.flush()
...
print "Done!"

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 can I suppress the newline after a print statement?

The question asks: "How can it be done in Python 3?"

Use this construct with Python 3.x:

for item in [1,2,3,4]:
print(item, " ", end="")

This will generate:

1  2  3  4

See this Python doc for more information:

Old: print x,           # Trailing comma suppresses newline
New: print(x, end=" ") # Appends a space instead of a newline

--

Aside:

in addition, the print() function also offers the sep parameter that lets one specify how individual items to be printed should be separated. E.g.,

In [21]: print('this','is', 'a', 'test')  # default single space between items
this is a test

In [22]: print('this','is', 'a', 'test', sep="") # no spaces between items
thisisatest

In [22]: print('this','is', 'a', 'test', sep="--*--") # user specified separation
this--*--is--*--a--*--test

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}")

How to add the new line without space after ',' in print() in Python

Don't print them at once! It's much simpler to split this up into two separate print statements, which also solves your problem:

print(len(author))
print(len(authorUnique))

If you do only want to use one print statement, however, you need to specify the right separator token, like this:

print(len(author), len(authorUnique), sep='\n')


Related Topics



Leave a reply



Submit