打印不换行(print 'a',)会打印一个空格,如何去掉?
打印不换行(print 'a',)会打印一个空格,如何去掉?
这个问题在这里已经有答案了:
我有这段代码:
>>> for i in xrange(20): ... print 'a', ... a a a a a a a a a a a a a a a a a a a a
我想要输出\'a\'
,而不带有\' \'
,就像这样:
aaaaaaaaaaaaaaaaaaaa
这可行吗?
admin 更改状态以发布 2023年5月21日
来自PEP 3105:将print作为函数在Python 2.6中的新功能文档中:
>>> from __future__ import print_function >>> print('a', end='')
显然,这仅适用于Python 3.0或更高版本(或者在开头使用from __future__ import print_function
的2.6+版本)。print
语句已被删除并默认成为Python 3.0中的print()
函数。
有很多种方法可以实现你的结果。如果你只是想要针对你的情况找到解决方案,请使用字符串乘法,就像@Ant所提到的那样。这仅适用于每个print
语句打印相同的字符串的情况。请注意,它适用于任意长度的字符串乘法(例如,'foo' * 20
可以工作)。
>>> print 'a' * 20 aaaaaaaaaaaaaaaaaaaa
如果你想要一般地实现这个,可以先构建一个字符串,然后一次打印出来。这将消耗一些字符串的内存,但只需调用一次print
。请注意,使用+=
的字符串连接现在是与你要连接的字符串的大小成线性的,所以这将很快。
>>> for i in xrange(20): ... s += 'a' ... >>> print s aaaaaaaaaaaaaaaaaaaa
或者你可以更直接地使用sys.stdout.write()来完成。print
只是它的一个包装器。这将只写入你给它的原始字符串,不包含任何格式。请注意,即使在20个a
的末尾,也没有打印换行符。
>>> import sys >>> for i in xrange(20): ... sys.stdout.write('a') ... aaaaaaaaaaaaaaaaaaaa>>>
Python 3将print
语句变成了print()
函数,它允许你设置一个end
参数。你可以通过从__future__
导入在>=2.6中使用它。但是,我会避免在任何严肃的2.x代码中使用它,因为对于那些从未使用过3.x的人来说,这可能有点令人困惑。然而,它应该能让你体验到一些3.x带来的好处。
>>> from __future__ import print_function >>> for i in xrange(20): ... print('a', end='') ... aaaaaaaaaaaaaaaaaaaa>>>