首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >打印时不换行(print 'a',)打印一个空格,如何删除?

打印时不换行(print 'a',)打印一个空格,如何删除?
EN

Stack Overflow用户
提问于 2010-12-21 20:09:42
回答 11查看 224K关注 0票数 125

我有这样的代码:

>>> 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

有可能吗?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-12-21 20:21:35

有很多方法可以达到你的效果。如果你只是想要一个针对你的案例的解决方案,就像@Ant提到的那样,使用string multiplication。只有当您的每条print语句打印相同的字符串时,这才能起作用。请注意,它适用于任意长度字符串的乘法(例如'foo' * 20 works)。

>>> 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>>> 

Python3将print语句更改为print() function,这允许您设置end参数。您可以通过从__future__导入在>=2.6中使用它。不过,我会在任何严肃的2.x代码中避免这一点,因为对于那些从未使用过3.x的人来说,这会让人有点困惑。然而,它应该会让你尝到3.x带来的一些好处。

>>> from __future__ import print_function
>>> for i in xrange(20):
...     print('a', end='')
... 
aaaaaaaaaaaaaaaaaaaa>>> 
票数 131
EN

Stack Overflow用户

发布于 2010-12-21 20:17:40

What’s New in Python 2.6文档中的PEP 3105: print As a Function

>>> from __future__ import print_function
>>> print('a', end='')

显然,这只适用于Python3.0或更高版本(或开头带有from __future__ import print_function的2.6+ )。在Python3.0中,print语句被删除,默认情况下成为print()函数。

票数 119
EN

Stack Overflow用户

发布于 2010-12-21 20:16:04

您可以通过在print语句之间向标准输出打印一个空字符串来抑制空格。

>>> import sys
>>> for i in range(20):
...   print 'a',
...   sys.stdout.write('')
... 
aaaaaaaaaaaaaaaaaaaa

但是,一种更简洁的解决方案是首先构建要打印的整个字符串,然后用一条print语句输出它。

票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4499073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档