打印没有换行(打印'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