How do I keep Python print from adding newlines or spaces?
在Python中,如果我说
1 | print 'h' |
我收到了字母H和一个换行符。如果我说
1 | print 'h', |
我收到了字母H,没有换行符。如果我说
1 2 | print 'h', print 'm', |
我得到了字母h,一个空格和字母m。我怎样才能阻止python打印空格呢?
print语句是同一循环的不同迭代,因此我不能只使用+运算符。
只是一个评论。在python 3中,您将使用
1 | print('h', end='') |
取消结束行终止符,以及
1 | print('a', 'b', 'c', sep='') |
取消项目之间的空白分隔符。
你可以使用:
1 2 | sys.stdout.write('h') sys.stdout.write('m') |
格雷格是对的——你可以使用sys.stdout.write
不过,也许您应该考虑重构您的算法,以积累一个
1 2 | lst = ['h', 'm'] print "".join(lst) |
或者使用
1 2 | >>> print 'me'+'no'+'likee'+'spacees'+'pls' menolikeespaceespls |
只要确保所有对象都是可连接的。
1 2 3 4 5 6 7 8 | 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 |
但实际上,您应该直接使用
为了完整性,另一种方法是在执行写入之后清除软空间值。
1 2 3 4 5 | import sys print"hello", sys.stdout.softspace=0 print"world", print"!" |
打印
不过,对于大多数情况,使用stdout.write()可能更方便。
这看起来可能很愚蠢,但似乎是最简单的:
1 2 | print 'h', print '\bm' |
重新控制你的控制台!简单地说:
1 | from __past__ import printf |
其中,
1 2 3 | import sys def printf(fmt, *varargs): sys.stdout.write(fmt % varargs) |
然后:
1 2 3 4 5 6 7 8 9 10 | >>> printf("Hello, world! ") Hello, world! >>> printf("%d %d %d ", 0, 1, 42) 0 1 42 >>> printf('a'); printf('b'); printf('c'); printf(' ') abc >>> |
额外奖励:如果您不喜欢
我没有添加新的答案。我只是把最好的答案用更好的格式。我可以看出,最好的答案是使用
1 2 3 4 | import sys Print = sys.stdout.write Print("Hello") Print("World") |
收益率:
1 | HelloWorld |
仅此而已。
在Python 2.6中:
1 2 3 4 5 6 7 8 9 | >>> 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 >>> |
因此,使用"打印"功能,您可以显式设置打印功能的sep和end参数。
您可以像c中的printf函数那样使用print。
例如
打印"%s%s"%(x,y)
1 | print("{0}{1}{2}".format(a, b, c)) |
1 2 | print"a", print"b", |
这将打印
1 2 3 | print"a", sys.stdout.write("0") print"b", |
这将打印
我还是搞不清楚到底发生了什么。有人能看看我的最佳猜测吗?
当你的
首先,假设EDOCX1(在python 2中)不打印任何空白(空格或换行符)。
然而,python 2是否注意到了打印的方式——您使用的是
1 2 3 4 | import sys a=raw_input() for i in range(0,len(a)): sys.stdout.write(a[i]) |
1 2 | print('''first line \ second line''') |
它会产生
first line second line
我曾经有过同样的问题,我想从一个文件中读取一些数字。我是这样解决的:
1 2 3 | f = open('file.txt', 'r') for line in f: print(str.split(line)[0]) |