我想用python来做。在c语言的这个例子中,我想做什么:
# include <stdio.h>
int main() {
int i;
for (i=0; i<10; i++) printf(".");
return 0;
}
输出:
..........
在python中:
>>> for i in range(10): print('.')
.
.
.
.
.
.
.
.
.
.
>>> print('.', '.', '.', '.', '.', '.', '.', '.', '.', '.')
. . . . . . . . . .
在python中, print
将添加一个 \n
或者空间。我怎样才能避免呢?现在,这只是一个例子。不要告诉我我可以先构建一个字符串,然后再打印它。我想知道如何将字符串“附加”到 stdout
.
22条答案
按热度按时间icnyk63a1#
我最近也有同样的问题。。。
我通过以下方式解决了这个问题:
这在unix和windows上都有效,但我还没有在MacOSX上测试过。
lsmepo6l2#
…您不需要导入任何库。只需使用删除字符:
这将删除换行符和空格(^ ^)*
0sgqnhkj3#
这在2.7.8和2.5.2(分别为天篷和osx终端)中都有效——无需模块导入或时间旅行。
yqlxgs2m4#
上述代码给出以下输出:
但是,如果您希望以直线打印所有这些输出,那么您所要做的就是添加一个名为end()的属性来打印。
输出:
不仅是一个空格,还可以为输出添加其他结尾。例如
输出:
记得:
dfuffjeb5#
通常有两种方法可以做到这一点:
在python 3.x中不带换行符打印
在print语句后不追加任何内容,并使用删除“\n”
end=''
作为:循环中的另一个示例:
在Python2.x中不使用换行符打印
添加一个尾随逗号表示在print ignore之后
\n
.循环中的另一个示例:
希望这对你有帮助。您可以访问此链接。
jum4pzuy6#
或具有如下功能:
现在:
产出:
rkttyhzu7#
许多答案似乎有点复杂。在python 3.x中,您只需执行以下操作:
end的默认值为
"\n"
. 我们只是把它改成一个空间,或者你也可以使用它end=""
(没有空间)做什么printf
通常是这样。egdjgwm88#
你会注意到以上所有答案都是正确的。但是我想做一个快捷方式,总是在末尾写入“end=''”参数。
您可以定义如下函数
它将接受所有数量的参数。甚至它也将接受所有其他参数,如file、flush等,并使用相同的名称。
lndjwyie9#
您想在for循环中正确打印一些内容;但你不希望每次都用新的行打印。。例如:
但你希望它像这样打印:嗨,对吗????只需在打印“hi”后添加一个逗号
例子:
for i in range (0,5): print "hi", OUTPUT: hi hi hi hi hi
tez616oj10#
@勒诺满足了我的要求。我在搜索“python suppress newline”时发现了这篇文章。我正在raspberry pi上使用idle3为putty开发python 3.2。我想在putty命令行上创建一个进度条。我不想让页面滚动掉。我想用一条横线来再次向用户保证,程序没有停止运行,也没有被发送到一个快乐的无限循环中去吃午饭,这是为了恳求“别管我了,我做得很好,但这可能需要一些时间。”交互式消息——就像文本中的进度条一样。
这个
print('Skimming for', search_string, '\b! .001', end='')
通过准备下一次屏幕写入来初始化消息,下一次屏幕写入将打印三个退格,如下所示:⌫⌫⌫ 去掉一个句号,去掉“001”并延长句号行。之后search_string
鹦鹉学舌用户输入\b!
修剪我的感叹号search_string
要返回的文本位于print()
否则,请正确放置标点符号。然后是一个空格和我正在模拟的“进度条”的第一个“点”。不必要的是,该消息还将使用页码(格式为三个长度,前导零)进行预处理,以便用户注意到正在处理进度,这也将反映我们稍后向右构建的周期数。进度条肉在菜单中
sys.stdout.write('\b\b\b.'+format(page, '03'))
线路。首先,要向左擦除,它会将光标备份到三个数字字符上,并将“\b\b”作为⌫⌫⌫ 删除并删除一个新句点以添加到进度条长度。然后,它会写下目前为止已经完成的页面的三位数字。因为sys.stdout.write()
等待缓冲区满或输出通道关闭时sys.stdout.flush()
强制立即写入。sys.stdout.flush()
内置于print()
这是通过print(txt, end='' )
. 然后,代码循环执行其普通的时间密集型操作,同时不再打印任何内容,直到它返回到这里,将三位数字擦掉,添加一个句点,然后再次写入三位数字,并递增。这三个数字的擦除和重写绝非必要——它只是一个例证
sys.stdout.write()
对print()
. 你可以很容易地用一个句号初始化,然后忘记三个漂亮的反斜杠-b⌫ 退格(当然也不写格式化页面),每次只打印一个较长的句点栏,而不使用空格或换行符sys.stdout.write('.'); sys.stdout.flush()
一对请注意,raspberry pi idle3 python shell不支持退格⌫ rubout而是打印一个空格,创建一个明显的分数列表。
-(o=8>wiz
wgx48brx11#
您可以在python 3中执行以下操作:
并用
python filename.py
或python3 filename.py
.iyr7buue12#
在Python3中,可以使用
sep=
及end=
系统参数print
功能:要不在字符串末尾添加换行符,请执行以下操作:
要在所有要打印的函数参数之间不添加空格,请执行以下操作:
您可以将任何字符串传递给任一参数,并且可以同时使用这两个参数。
如果缓冲有问题,可以通过添加
flush=True
关键字参数:python 2.6和2.7
从Python2.6中,您可以导入
print
使用__future__
模块:这允许您使用上面的Python3解决方案。
但是,请注意
flush
关键字在的版本中不可用print
从导入的函数__future__
在python 2中;它只适用于Python3,更具体地说是3.3和更高版本。在早期版本中,您仍然需要通过调用sys.stdout.flush()
. 您还必须重写执行此导入的文件中的所有其他打印语句。或者你可以使用
sys.stdout.write()
```import sys
sys.stdout.write('.')
sys.stdout.flush()
rvpgvaaj13#
您可以尝试:
mlnl4t2r14#
python 2.6+:
python 3:
python<=2.5:
如果每次打印后都有足够的空间,则在python 2中
Python2中的误导-避免:
khbbv19g15#
在python 3+中,
print
是一个函数。当你打电话的时候python将其转换为
你可以改变
end
你想要什么就给什么。