Bar*_*art 232 python printing formatting python-2.x
在python中,如果我说
print 'h'
Run Code Online (Sandbox Code Playgroud)
我收到了字母h和换行符.如果我说
print 'h',
Run Code Online (Sandbox Code Playgroud)
我收到了字母h而没有换行.如果我说
print 'h',
print 'm',
Run Code Online (Sandbox Code Playgroud)
我收到了字母h,空格和字母m.如何防止Python打印空间?
print语句是同一循环的不同迭代,所以我不能只使用+运算符.
Fed*_*oni 285
只是评论.在Python 3中,您将使用
print('h', end='')
Run Code Online (Sandbox Code Playgroud)
抑制endline终结符,和
print('a', 'b', 'c', sep='')
Run Code Online (Sandbox Code Playgroud)
抑制项之间的空白分隔符.
Gre*_*ill 196
您可以使用:
sys.stdout.write('h')
sys.stdout.write('m')
Run Code Online (Sandbox Code Playgroud)
Dan*_*Dan 42
Greg是对的 - 你可以使用sys.stdout.write
但是,也许您应该考虑重构算法以累积<whatevers>的列表然后
lst = ['h', 'm']
print "".join(lst)
Run Code Online (Sandbox Code Playgroud)
小智 27
或使用a +,即:
>>> print 'me'+'no'+'likee'+'spacees'+'pls'
menolikeespaceespls
Run Code Online (Sandbox Code Playgroud)
只需确保所有都是可连接的对象.
tzo*_*zot 20
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
Run Code Online (Sandbox Code Playgroud)
但实际上,你应该sys.stdout.write直接使用.
Bri*_*ian 17
为完整起见,另一种方法是在执行写入后清除softspace值.
import sys
print "hello",
sys.stdout.softspace=0
print "world",
print "!"
Run Code Online (Sandbox Code Playgroud)
版画 helloworld !
但是,对于大多数情况,使用stdout.write()可能更方便.
小智 13
这可能看起来很愚蠢,但似乎是最简单的:
print 'h',
print '\bm'
Run Code Online (Sandbox Code Playgroud)
重新获得对控制台的控制权!只是:
from __past__ import printf
Run Code Online (Sandbox Code Playgroud)
其中__past__.py包括:
import sys
def printf(fmt, *varargs):
sys.stdout.write(fmt % varargs)
Run Code Online (Sandbox Code Playgroud)
然后:
>>> 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
>>>
Run Code Online (Sandbox Code Playgroud)
额外奖励:如果你不喜欢print >> f, ...,你可以将这个caper扩展到fprintf(f,...).
我没有添加新答案.我只是以更好的格式提出最好的答案.我可以看到评级的最佳答案是使用sys.stdout.write(someString).你可以尝试一下:
import sys
Print = sys.stdout.write
Print("Hello")
Print("World")
Run Code Online (Sandbox Code Playgroud)
会产生:
HelloWorld
Run Code Online (Sandbox Code Playgroud)
就这些.
在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
>>>
Run Code Online (Sandbox Code Playgroud)
因此,使用__future__中的print_function可以明确设置print函数的sep和end参数.