打印没有换行(打印'a')打印空间,如何删除?
我有这个代码:
>>> for i in xrange(20): ... print 'a', ... aaaaaaaaaaaaaaaaaaaa
我想要输出'a'
,而' '
像这样:
aaaaaaaaaaaaaaaaaaaa
可能吗?
有很多方法可以实现你的结果。 如果你只是想为你的情况的解决scheme,使用string乘法 @Ant提到。 如果每个print
语句打印相同的string,这只会起作用。 请注意,它适用于任何长度string的乘法(例如'foo' * 20
作品)。
>>> print 'a' * 20 aaaaaaaaaaaaaaaaaaaa
如果你想这样做一般,build立一个string,然后打印一次。 这将消耗一些string的内存,但只打一个电话print
。 请注意,使用+=
string连接现在与要连接的string的大小成线性关系,因此这将很快。
>>> for i in xrange(20): ... s += 'a' ... >>> print s aaaaaaaaaaaaaaaaaaaa
或者你可以更直接地使用sys.stdout 。 写() ,哪个print
是一个包装。 这将只写入你给它的原始string,没有任何格式。 请注意,即使在20s结束时也不会打印换行符。
>>> import sys >>> for i in xrange(20): ... sys.stdout.write('a') ... aaaaaaaaaaaaaaaaaaaa>>>
Python 3将print
语句更改为print()函数 ,该函数允许您设置end
参数。 您可以通过从__future__
导入来在> = 2.6中使用它。 尽pipe如此,我仍然会避免使用任何严重的2.x代码,因为对于那些从未使用过3.x的用户来说,这会有些困惑。 但是,它应该给你一些善良3.x带来的味道。
>>> from __future__ import print_function >>> for i in xrange(20): ... print('a', end='') ... aaaaaaaaaaaaaaaaaaaa>>>
从http://docs.python.org/whatsnew/2.6.html#pep-3105-print-as-a-function
>>> from __future__ import print_function >>> print('a', end='')
显然,只适用于Python 2.6或更高版本。
可以通过在print
语句之间打印一个空string到stdout来压缩空间。
>>> import sys >>> for i in range(20): ... print 'a', ... sys.stdout.write('') ... aaaaaaaaaaaaaaaaaaaa
然而,一个更清洁的解决scheme是首先构build你想要打印的整个string,然后用一个print
语句输出它。
您可以打印退格字符( '\b'
):
for i in xrange(20): print '\ba',
结果:
aaaaaaaaaaaaaaaaaaaa
Python 3.x:
for i in range(20): print('a', end='')
Python 2.6或2.7:
from __future__ import print_function for i in xrange(20): print('a', end='')
如果你想让他们每次出现一个,你可以这样做:
import time import sys for i in range(20): sys.stdout.write('a') sys.stdout.flush() time.sleep(0.5)
sys.stdout.flush()
是强制每次循环运行时都要写入的字符。
正如旁注:
打印是O(1),但build立一个string,然后打印是O(n),其中n是string中的字符总数。 所以是的,当build立string是“更清洁”,这不是最有效的方法。
我会这样做的方式如下:
from sys import stdout printf = stdout.write
现在你有一个“打印function”,打印出你所给的任何string,而不用每次都返回新的行字符。
printf("Hello,") printf("World!")
输出将是:你好,世界!
但是,如果要打印整数,浮点数或其他非string值,则必须使用str()函数将它们转换为string。
printf(str(2) + " " + str(4))
输出将是:2 4
无论是ant 说 ,还是积累成一个string,然后打印一次:
s = ''; for i in xrange(20): s += 'a' print s
没有什么? 你的意思是
>>> print 'a' * 20 aaaaaaaaaaaaaaaaaaaa
?