newline - python没有换行符或者空白如何打印?


#include <stdio.h>

int main() {
 int i;
 for (i=0; i<10; i++) printf(".");
 return 0;
}

输出:

 
..........

在python中:


>>> for i in xrange(0,10): print '.'
.
.
.
.
.
.
.
.
.
.
>>> for i in xrange(0,10): print '.',
. . . . . . . . . .

在python print中,会添加一个'n'或一个空格,如何避免?

时间:


import sys
sys.stdout.write('.')

或者


print('.'), # this will still print a space, but not a newline

请注意,在python 3中,print语句已更改为函数,因此第二个示例不再有效,在python 3中,你可以执行以下操作:

 
print('.', end="" )

或者,如果缓冲区有问题,可以这样做。

print('.',end="" ,flush=True)


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


# for python2 to use the print() function, removing the print keyword
from __future__ import print_function
for x in xrange(10):
 print('.', end='')

要不破坏所有python2 的print 关键字,请创建单独的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


import sys
for i in xrange(0,10):
 sys.stdout.write(".")
 sys.stdout.flush()

我最近也有同样的问题。

我通过执行以下操作来解决:


C:tests>type pt.py
import sys, os

# reopen stdout with"newline=None".
# in this mode,
# input: accepts any newline character, outputs as 'n'
# output: 'n' converts to os.linesep

sys.stdout = os.fdopen(sys.stdout.fileno(),"w", newline=None)

for i in range(1,10):
 print(i)

C:tests>

这适用于unix和Windows,还没有在macosx上测试过。

在python3中可以执行相同的操作,如下所示:


#!usr/bin/python

i = 0
while i<10 :
 print('.',end='')
 i = i+1

python filename.pypython3 filename.py执行它

...