在python中,如果我说
print 'h'
得到字母h和换行符。如果我说
print 'h',
我得到了字母h,没有换行符。如果我说
print 'h',
print 'm',
我得到字母h,一个空格,和字母m。我如何阻止Python打印空格?
print语句是同一个循环的不同迭代,所以我不能只使用+运算符。
在python中,如果我说
print 'h'
得到字母h和换行符。如果我说
print 'h',
我得到了字母h,没有换行符。如果我说
print 'h',
print 'm',
我得到字母h,一个空格,和字母m。我如何阻止Python打印空格?
print语句是同一个循环的不同迭代,所以我不能只使用+运算符。
当前回答
重新控制你的控制台!简单:
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
>>>
额外奖励:如果你不喜欢打印>> f,…,您可以将此跳跃扩展到fprintf(f,…)。
其他回答
我不是在增加一个新的答案。我只是把最好的答案用更好的格式写出来。 我可以看到,通过评级的最佳答案是使用sys.stdout.write(someString)。你可以试试这个:
import sys
Print = sys.stdout.write
Print("Hello")
Print("World")
将收益率:
HelloWorld
仅此而已。
sys.stdout.write是(在Python 2中)唯一的健壮解决方案。Python 2打印是疯狂的。考虑下面的代码:
print "a",
print "b",
这将打印一个b,使您怀疑它打印的是一个尾随空格。但这是不正确的。试试这个吧:
print "a",
sys.stdout.write("0")
print "b",
这将打印a0b。你怎么解释?空间到哪里去了?
我还是不太明白这到底是怎么回事。谁能看看我的最佳猜测:
当你的打印上有一个拖尾时,我试图推导出规则:
首先,让我们假设print,(在Python 2中)不打印任何空格(空格或换行符)。
然而,Python 2确实注意到你是如何打印的——你使用的是print,还是sys.stdout。写作,还是别的什么?如果连续两次调用print, Python将坚持在两者之间放置一个空格。
重新控制你的控制台!简单:
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
>>>
额外奖励:如果你不喜欢打印>> f,…,您可以将此跳跃扩展到fprintf(f,…)。
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。
在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参数。