如何保持Python打印不添加换行符或空格?
在Python中,如果我说
print 'h'
我得到字母h和换行符。 如果我说
print 'h',
我得到字母h,没有换行符。 如果我说
print 'h', print 'm',
我得到字母h,空格和字母m。 我怎样才能防止Python打印空间?
打印语句是相同的循环不同的迭代,所以我不能只使用+运算符。
您可以使用:
sys.stdout.write('h') sys.stdout.write('m')
只是一个评论。 在Python 3中 ,您将使用
print('h', end='')
压制终结者的终结者
print('a', 'b', 'c', sep='')
禁止项目之间的空白分隔符。
格雷格是正确的 – 你可以使用sys.stdout.write
也许,你应该考虑重构你的算法来积累<whatevers>列表,然后
lst = ['h', 'm'] print "".join(lst)
或者使用一个+
,即:
>>> 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
。
为了完整性,另一种方法是在执行写入之后清除软空间值。
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' hmh >>> 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可以显式设置打印函数的sep和end参数。
您可以使用打印,如C中的printf函数
例如
打印“%s%s”%(x,y)
sys.stdout.write
是(在Python 2中)唯一的强大的解决方案。 Python 2打印是疯狂的。 考虑这个代码:
print "a", print "b",
这将打印ab
,导致您怀疑它正在打印尾部空格。 但是这是不正确的。 试试这个:
print "a", sys.stdout.write("0") print "b",
这将打印a0b
。 你如何解释? 空间哪里去了?
我仍然无法弄清楚这里发生了什么。 有人可以看看我最好的猜测:
当你有一个尾随,
在你的print
上我试图推导出规则 :
首先,假设print ,
(在Python 2中)不打印任何空格(空格或换行符)。
不过,Python 2会注意你如何打印 – 你正在使用print
,还是使用sys.stdout.write
或其他东西? 如果连续打两个电话,那么Python会坚持在两者之间放置一个空格。
import sys a=raw_input() for i in range(0,len(a)): sys.stdout.write(a[i])
print('''first line \ second line''')
它会产生
一线二线
print("{0}{1}{2}".format(a, b, c))
一旦我想从文件中读取一些数字,我也遇到了同样的问题。 我解决了这个问题:
f = open('file.txt', 'r') for line in f: print(str.split(line)[0])