考虑在Python中使用print的以下示例:
>>> for i in range(4): print('.')
.
.
.
.
>>> print('.', '.', '.', '.')
. . . .
在每个值之间添加换行符或空格。我怎样才能避免这种情况,从而使输出。。。。相反换句话说,如何将字符串“附加”到标准输出流?
考虑在Python中使用print的以下示例:
>>> for i in range(4): print('.')
.
.
.
.
>>> print('.', '.', '.', '.')
. . . .
在每个值之间添加换行符或空格。我怎样才能避免这种情况,从而使输出。。。。相反换句话说,如何将字符串“附加”到标准输出流?
当前回答
这里有三个代码供您选择:
print("".join(["." for i in range(4)]))
or
print("." + "." + "." + ".")
or
print(".", ".", ".", ".", sep="")
其他回答
为Python 2.6+使用Python 3样式打印函数(它还将打破同一文件中任何现有的带关键字的打印语句)。
# For Python 2 to use the print() function, removing the print keyword
from __future__ import print_function
for x in xrange(10):
print('.', end='')
为了不破坏所有Python 2打印关键字,请创建一个单独的printf.py文件:
# printf.py
from __future__ import print_function
def printf(str, *args):
print(str % args, end='')
然后,在文件中使用它:
from printf import printf
for x in xrange(10):
printf('.')
print 'done'
#..........done
显示printf样式的更多示例:
printf('hello %s', 'world')
printf('%i %f', 10, 3.14)
#hello world10 3.140000
如何在同一行打印:
import sys
for i in xrange(0,10):
sys.stdout.write(".")
sys.stdout.flush()
您可以在Python 3中执行以下操作:
#!usr/bin/python
i = 0
while i<10 :
print('.', end='')
i = i+1
并使用python filename.py或python3 filename.py。
注意:这个问题的标题以前类似于“How to printf in Python”
由于人们可能会根据标题来这里寻找它,Python也支持printf样式替换:
>>> 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
而且,您可以方便地相乘字符串值:
>>> print "." * 10
..........
Python 3:
print('.', end='')
Python 2.6+:
from __future__ import print_function # needs to be first statement in file
print('.', end='')
Python<=2.5:
import sys
sys.stdout.write('.')
如果每次打印后都有多余的空间,在Python 2中:
print '.',
Python 2中的误导-避免:
print('.'), # Avoid this if you want to remain sane
# This makes it look like print is a function, but it is not.
# This is the `,` creating a tuple and the parentheses enclose an expression.
# To see the problem, try:
print('.', 'x'), # This will print `('.', 'x') `