打印不换行(print 'a',)会打印一个空格,如何去掉?

25 浏览
0 Comments

打印不换行(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日
0
0 Comments

来自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()函数。

0
0 Comments

有很多种方法可以实现你的结果。如果你只是想要针对你的情况找到解决方案,请使用字符串乘法,就像@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>>> 

0