在python中,如果我说
print 'h'
我收到了字母h和换行符.如果我说
print 'h',
我收到了字母h而没有换行.如果我说
print 'h', print 'm',
我收到了字母h,空格和字母m.如何防止Python打印空间?
print语句是同一循环的不同迭代,所以我不能只使用+运算符.
只是评论.在Python 3中,您将使用
print('h', end='')
抑制endline终结符,和
print('a', 'b', 'c', sep='')
抑制项之间的空白分隔符.
您可以使用:
sys.stdout.write('h') sys.stdout.write('m')
Greg是对的 - 你可以使用sys.stdout.write
但是,也许您应该考虑重构算法以累积
lst = ['h', 'm'] print "".join(lst)
或使用a +
,即:
>>> print 'me'+'no'+'likee'+'spacees'+'pls' menolikeespaceespls
只需确保所有都是可连接的对象.
Python 2.5.2 (r252:60911, Sep 27 2008, 07:03:14) [GCC 4.3.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> print "hello",; print "there" hello there >>> print "hello",; sys.stdout.softspace=False; print "there" hellothere
但实际上,你应该sys.stdout.write
直接使用.
为完整起见,另一种方法是在执行写入后清除softspace值.
import sys print "hello", sys.stdout.softspace=0 print "world", print "!"
版画 helloworld !
但是,对于大多数情况,使用stdout.write()可能更方便.
这可能看起来很愚蠢,但似乎是最简单的:
print 'h', print '\bm'
重新获得对控制台的控制权!只是:
from __past__ import printf
其中__past__.py
包括:
import sys def printf(fmt, *varargs): sys.stdout.write(fmt % varargs)
然后:
>>> printf("Hello, world!\n") Hello, world! >>> printf("%d %d %d\n", 0, 1, 42) 0 1 42 >>> printf('a'); printf('b'); printf('c'); printf('\n') abc >>>
额外奖励:如果你不喜欢print >> f, ...
,你可以将这个caper扩展到fprintf(f,...).
我没有添加新答案.我只是以更好的格式提出最好的答案.我可以看到评级的最佳答案是使用sys.stdout.write(someString)
.你可以尝试一下:
import sys Print = sys.stdout.write Print("Hello") Print("World")
会产生:
HelloWorld
就这些.
在python 2.6中:
>>> print 'h','m','h' h m h >>> from __future__ import print_function >>> print('h',end='') h>>> print('h',end='');print('m',end='');print('h',end='') hmh>>> >>> print('h','m','h',sep=''); hmh >>>
因此,使用__future__中的print_function可以明确设置print函数的sep和end参数.