代码之家  ›  专栏  ›  技术社区  ›  Andrea Ambu

如何在没有换行符或空格的情况下打印

  •  2396
  • Andrea Ambu  · 技术社区  · 17 年前

    考虑以下示例 print 在Python中:

    >>> for i in range(4): print('.')
    .
    .
    .
    .
    >>> print('.', '.', '.', '.')
    . . . .
    

    在每个值之间添加换行符或空格。我如何避免这种情况,以便输出 .... 相反?换句话说,我如何将字符串“附加”到标准输出流中?

    27 回复  |  直到 3 年前
        1
  •  9
  •   oFinally    4 年前

    在Python 3中,你可以使用 sep= end= 参数 print 功能:

    要不在字符串末尾添加换行符,请执行以下操作:

    print('.', end='')
    

    要在要打印的所有函数参数之间不添加空格,请执行以下操作:

    print('a', 'b', 'c', sep='')
    

    您可以将任何字符串传递给任一参数,并且可以同时使用这两个参数。

    如果缓冲有问题,可以通过添加来刷新输出 flush=True 关键字参数:

    print('.', end='', flush=True)
    

    Python 2.6和2.7

    从Python 2.6中,您可以导入 打印 使用Python 3中的函数 __future__ module :

    from __future__ import print_function
    

    它允许您使用上面的Python 3解决方案。

    但是,请注意 flush 关键字在版本中不可用 打印 从导入的函数 __未来__ 在Python 2中;它只适用于Python 3,更具体地说是3.3及更高版本。在早期版本中,您仍然需要通过调用手动刷新 sys.stdout.flush() 。您还必须重写执行此导入的文件中的所有其他打印语句。

    或者你可以使用 sys.stdout.write()

    import sys
    sys.stdout.write('.')
    

    您可能还需要致电

    sys.stdout.flush()
    

    确保 stdout 立即冲洗。

        2
  •  0
  •   My Car    3 年前

    对于Python 2及更早版本,它应该像中所述的那样简单 Re: How does one print without a CR? 靠近 Guido van Rossum (转述):

    是否可以打印一些东西,但不能自动拥有 附加了回车符吗?

    是的,在要打印的最后一个参数后附加一个逗号。例如,此循环在用空格分隔的行上打印数字0..9。注意添加最后一个换行符的无参数“print”:

    >>> for i in range(10):
    ...     print i,
    ... else:
    ...     print
    ...
    0 1 2 3 4 5 6 7 8 9
    >>>
    
        3
  •  0
  •   Pavindu    3 年前

    注意:这个问题的标题曾经类似于“如何在Python中打印f”

    由于人们可能会根据标题来这里寻找它,Python还支持printf样式替换:

    >>> strings = [ "one", "two", "three" ]
    >>>
    >>> for i in xrange(3):
    ...     print "Item %d: %s" % (i, strings[i])
    ...
    Item 0: one
    Item 1: two
    Item 2: three
    

    而且,您可以轻松地将字符串值相乘:

    >>> print "." * 10
    ..........