问:
C中的示例:
for (int i = 0; i < 4; i++)
printf(".");
输出:
....
在 Python 中:
>>> for i in range(4): print('.')
.
.
.
.
>>> print('.', '.', '.', '.')
. . . .
在 Python 中,print 将添加一个 \n 或空格。我怎样才能避免这种情况?我想知道如何将字符串“附加”到 stdout。
答1:
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
在 Python 3 中,您可以使用 print 函数的 sep= 和 end= 参数:
不在字符串末尾添加换行符:
print('.', end='')
要不在要打印的所有函数参数之间添加空格:
print('a', 'b', 'c', sep='')
您可以将任何字符串传递给任一参数,并且可以同时使用这两个参数。
如果您在缓冲时遇到问题,可以通过添加 flush=True 关键字参数来刷新输出:
print('.', end='', flush=True)
Python 2.6 和 2.7
在 Python 2.6 中,您可以使用 future module 从 Python 3 导入 print 函数:
from __future__ import print_function
它允许您使用上面的 Python 3 解决方案。
但是,请注意 flush 关键字在 Python 2 中从 future 导入的 print 函数版本中不可用;它仅适用于 Python 3,更具体地说是 3.3 及更高版本。在早期版本中,您仍需要通过调用 sys.stdout.flush() 手动刷新。您还必须在执行此导入的文件中重写所有其他打印语句。
或者您可以使用 sys.stdout.write()
import sys
sys.stdout.write('.')
您可能还需要致电
sys.stdout.flush()
以确保立即刷新 stdout。
谢谢!在 Python 3.6.3 中,flush=True 至关重要,否则它不会按预期工作。
有人可以解释我为什么需要 flush 以及它实际上做了什么吗?
晚了几个月,但回答@Rishav flush 清空缓冲区并立即显示输出。如果没有刷新,您最终可能会打印出确切的文本,但只有当系统开始处理图形而不是 IO 时。 Flush 通过“刷新”缓存使文本立即可见。
如果您在缓冲时遇到问题,您可以使用 python -u my.py 取消缓冲所有 python 输出。如果您想实时查看进度,这通常是一个好主意。
我使用格式字符串,不想在字符串和 ? 之间换行:line = f"{line[6:]}?"还有“结束”吗?
答2:
一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会
对于 Python 2 及更早版本,它应该像 Guido van Rossum 在 Re: How does one print without a CR? 中描述的一样简单(释义):
是否可以打印一些东西,但不能自动附加回车符?
是的,在要打印的最后一个参数之后附加一个逗号。例如,此循环在由空格分隔的行上打印数字 0…9。请注意添加最终换行符的无参数“打印”:
>>> for i in range(10):
... print i,
... else:
... print
...
0 1 2 3 4 5 6 7 8 9
>>>
由于空格,这在问题中被特别列为不良行为
相反,应该删除答案有两个原因:它具有您无法禁用的不良副作用(包括额外的空格),并且它与 python 3 不兼容(括号强制转换为元组) .我期望这些来自 PHP 的劣质构造,而不是 Python。所以最好不要使用它。
// ,不过,这是在 Python 2 中完成它的最简单方法,并且对于真正旧的操作系统有很多一次性代码。可能不是最好的解决方案,甚至不推荐。然而,StackOverflow 的一大优势是它让我们知道那里有哪些奇怪的技巧。 KDP,您能否在顶部添加一个关于@Eric Leschinski 所说内容的快速警告?毕竟,这确实有道理。
@nathanbasanese 简单与否,它具有提问者明确不想要的副作用。否决。
我怎样才能在每个 N 之后摆脱那个空间,即我想要 0123456..
答3:
huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。
注意:这个问题的标题曾经类似于“如何在 Python 中 printf”
由于人们可能会根据标题来这里寻找它,因此 Python 还支持 printf 样式的替换:
>>> strings = [ "one", "two", "three" ]
>>>
>>> for i in xrange(3):
... print "Item %d: %s" % (i, strings[i])
...
Item 0: one
Item 1: two
Item 2: three
而且,您可以轻松地将字符串值相乘:
>>> print "." * 10
..........
确实,它没有抓住重点。 :) 因为这个问题已经有了很好的答案,所以我只是在详细阐述一些可能有用的相关技术。
根据问题的标题,我相信这个答案更适合模拟人们在 C/C++ 中通常使用 printf 的方式
这回答了问题的标题,但不是正文。也就是说,它为我提供了我正在寻找的东西。 :)
这不是问题的答案
@Vanuan,我在答案的底部解释说问题的标题在某个时候发生了变化。 :)
答4:
huntsbot.com – 高效赚钱,自由工作
对 Python 2.6+ 使用 Python 3 风格的 print 函数(它还会破坏同一文件中任何现有的关键字 print 语句)。
# For Python 2 to use the print() function, removing the print keyword
from __future__ import print_function
for x in xrange(10):
print('.', end='')
为了不破坏所有 Python 2 打印关键字,请创建一个单独的 printf.py 文件:
# printf.py
from __future__ import print_function
def printf(str, *args):
print(str % args, end='')
然后,在您的文件中使用它:
from printf import printf
for x in xrange(10):
printf('.')
print 'done'
#..........done
显示 printf 样式的更多示例:
printf('hello %s', 'world')
printf('%i %f', 10, 3.14)
#hello world10 3.140000
答5:
huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。
如何在同一行打印:
import sys
for i in xrange(0,10):
sys.stdout.write(".")
sys.stdout.flush()
状态的实时输出,并且在 10 多年后在 Python 3 中仍然相关!
答6:
huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。
Python 3.x 中的 print 函数有一个可选的 end 参数,可让您修改结束字符:
print("HELLO", end="")
print("HELLO")
输出:
你好你好
还有 sep 用于分隔符:
print("HELLO", "HELLO", "HELLO", sep="")
输出:
你好你好你好
如果您想在 Python 2.x 中使用它,只需在文件开头添加:
from __future__ import print_function
“sep”是做什么的?
@McPeppr 我知道这很旧,但为了更清楚起见,我还是编辑了答案。现在检查。
感谢您的编辑。 sep 会派上用场。到目前为止,我使用 sep.join(list) 将列表的元素与中间的分隔符连接起来 - 非常适合编写 csv 文件
答7:
huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!
使用 functools.partial 创建一个名为 printf 的新函数:
>>> import functools
>>> printf = functools.partial(print, end="")
>>> printf("Hello world\n")
Hello world
这是用默认参数包装函数的简单方法。
我曾经想这样做但不能这样做,因为 otherfunction = function(1) 只会存储 function(1) 的结果,而不是将 otherfunction 变成包装器。谢谢!
答8:
huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。
在 Python 3+ 中,print 是一个函数。你打电话时
print('Hello, World!')
Python 将其翻译为
print('Hello, World!', end='\n')
您可以将 end 更改为您想要的任何内容。
print('Hello, World!', end='')
print('Hello, World!', end=' ')
答9:
与HuntsBot一起,探索全球自由职业机会–huntsbot.com
在 Python 2.x 中,您只需在 print 函数的末尾添加 ,,它就不会在新行上打印。
// , 这实际上使它什么也没打印出来。我们不需要在最后添加另一个没有参数的打印语句,如stackoverflow.com/a/493500/2146138所示吗?你愿意用一个非常短的两行或三行示例来编辑这个答案吗?
OP 不希望添加空格
没有回答问题。没有空间。
这在 Python 2.x 中不再有效,只能回答 OP 想要的一半。为什么要 16 票?
@TheTechRobo36414519:有 25 个赞成票和 9 个反对票(总共 16 个)。从那以后,它得到了一张赞成票和一张反对票(所以现在总数仍然是 16)。
答10:
huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感
蟒蛇 3:
print('.', end='')
Python 2.6+:
from __future__ import print_function # needs to be first statement in file
print('.', end='')
Python <=2.5:
import sys
sys.stdout.write('.')
如果每次打印后有额外的空间是可以的,在 Python 2 中:
print '.',
Python 2 中的误导 - 避免:
print('.'), # Avoid this if you want to remain sane
# This makes it look like print is a function, but it is not.
# This is the `,` creating a tuple and the parentheses enclose an expression.
# To see the problem, try:
print('.', 'x'), # This will print `('.', 'x') `
答11:
huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。
一般来说,有两种方法可以做到这一点:
在 Python 3.x 中不带换行符打印
在 print 语句之后不添加任何内容并使用 end=‘’ 删除“\n”,如下所示:
>>> print('hello')
hello # Appending '\n' automatically
>>> print('world')
world # With previous '\n' world comes down
# The solution is:
>>> print('hello', end='');print(' world'); # End with anything like end='-' or end=" ", but not '\n'
hello world # It seems to be the correct output
循环中的另一个示例:
for i in range(1,10):
print(i, end='.')
在 Python 2.x 中不带换行符打印
添加尾随逗号表示:打印后,忽略 \n。
>>> print "hello",; print" world"
hello world
循环中的另一个示例:
for i in range(1,10):
print "{} .".format(i),
您可以访问此link。
空间呢?
使用 end=" " 例如: print('hello', end='' ");print('world')
您的 2.7 解决方案不会删除空间。
我提到删除'\ n'不是空格,空格在python2中是默认的。看看这是什么样子:paiza.io/projects/e/35So9iUPfMdIORGzJTb2NQ 中的 print 'hello' ;print'there'
对,这就是为什么您的答案被否决的原因。您没有回答“如何在没有换行符或空格的情况下打印?”的问题。您对 2.x 的回答没有回答这个问题。您对 3.0 的回答与九年前发布的许多其他答案相同。简单地说,这个答案对社区没有任何用处,你应该删除它。
原文链接:https://www.huntsbot.com/qa/eRJo/how-to-print-without-a-newline-or-space?lang=zh_CN&from=csdn
huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感