How to print without a newline or space

Viewed 2328235

Example in C:

for (int i = 0; i < 4; i++)
    printf(".");

Output:

....

In Python:

>>> for i in range(4): print('.')
.
.
.
.
>>> print('.', '.', '.', '.')
. . . .

In Python, print will add a \n or space. How can I avoid that? I'd like to know how to "append" strings to stdout.

25 Answers

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.

Note: The title of this question used to be something like "How to printf in Python"

Since people may come here looking for it based on the title, Python also supports printf-style substitution:

>>> strings = [ "one", "two", "three" ]
>>>
>>> for i in xrange(3):
...     print "Item %d: %s" % (i, strings[i])
...
Item 0: one
Item 1: two
Item 2: three

And, you can handily multiply string values:

>>> print "." * 10
..........

The print function in Python 3.x has an optional end parameter that lets you modify the ending character:

print("HELLO", end="")
print("HELLO")

Output:

HELLOHELLO

There's also sep for separator:

print("HELLO", "HELLO", "HELLO", sep="")

Output:

HELLOHELLOHELLO

If you wanted to use this in Python 2.x just add this at the start of your file:

from __future__ import print_function

In general, there are two ways to do this:

Print without a newline in Python 3.x

Append nothing after the print statement and remove '\n' by using end='', as:

>>> print('hello')
hello  # Appending '\n' automatically
>>> print('world')
world # With previous '\n' world comes down

# The solution is:
>>> print('hello', end='');print(' world'); # End with anything like end='-' or end=" ", but not '\n'
hello world # It seems to be the correct output

Another Example in Loop:

for i in range(1,10):
    print(i, end='.')

Print without a newline in Python 2.x

Adding a trailing comma says: after print, ignore \n.

>>> print "hello",; print" world"
hello world

Another Example in Loop:

for i in range(1,10):
    print "{} .".format(i),

You can visit this link.

just use the end ="" or sep =""

>>> for i in range(10):
        print('.', end = "")

output:

.........

Just use end=''

for i in range(5):
  print('a',end='')

# aaaaa
 for i in range(0, 5): #setting the value of (i) in the range 0 to 5 
     print(i)

The above code gives the following output:

 0    
 1
 2
 3
 4

But if you want to print all these output in a straight line then all you should do is add an attribute called end() to print.

 for i in range(0, 5): #setting the value of (i) in the range 0 to 5 
     print(i, end=" ")

Output:

 0 1 2 3 4

And not just a space, you can also add other endings for your output. For example,

 for i in range(0, 5): #setting the value of (i) in the range 0 to 5 
     print(i, end=", ")

Output:

 0, 1, 2, 3, 4, 

Remember:

 Note: The [for variable in range(int_1, int_2):] always prints till the variable is 1

 less than it's limit. (1 less than int_2)

Or have a function like:

def Print(s):
    return sys.stdout.write(str(s))

Then now:

for i in range(10): # Or `xrange` for the Python 2 version
    Print(i)

Outputs:

0123456789

Python3 :

print('Hello',end='')

Example :

print('Hello',end=' ')
print('world')

Output: Hello world

This method add spearator between provided texts :

print('Hello','world',sep=',')

Output:Hello,world

Related