【问题标题】:Print multiple lines without space between lines打印多行,行间没有空格
【发布时间】:2018-02-25 21:51:58
【问题描述】:

我有一个要在终端中打印的行列表(来自文本文件)。这是我喜欢的格式(打印行之间没有空行):

>>> print("line \n" * 5)
line 
line 
line 
line 
line 

这就是它的样子(一行文字,一个空行等):

>>> for x in range(0, 5): print "line \n"
... 
line 

line 

line 

line 

line

知道为什么它会以这种方式工作,以及如何打印我的行列表,而它们之间没有空行吗?

更新(这是我想去掉空行的地方):

with open(FILE, 'r') as f:
    lines = f.readlines()
    for line in lines:
        print line

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    这实际上是由于您阅读文件的方式。如果你做过类似的事情

    with open(FILE) as f:
        data = f.readlines()
    

    那么data 将是保留行尾字符的行列表。如果您不想要行尾字符,请改用:

    with open(FILE) as f:
        data = f.read().splitlines()
    

    如果您不想更改将数据读入列表的方式,则可以像这样连接并打印这些行:

    print ''.join(data)
    

    要回答字面问题,如果您有一个带有换行符的字符串,并且您想禁止 print 语句生成的换行符,那么在 Python 2 中执行此操作的方法是在 print 语句上使用尾随逗号:

    with open(FILE) as f:
        for line in f:
            print line,
    

    但请注意,这样逐行迭代并不是真正必要的。您也可以直接打印数据:

    with open(FILE) as f:
        print f.read()
    

    【讨论】:

    • 虽然这确实解决了 OP 的问题,但我必须指出它并不能解决上述问题 - 如何不在以它结尾的字符串上打印额外的换行符。
    • @Todor 在答案中添加了最后一部分以解决字面问题。
    【解决方案2】:

    使用 for 循环时,您可以按如下方式删除“\n”

    for x in range(0, 5): print "line"
    

    【讨论】:

      【解决方案3】:

      打印命令在输出显示中隐式添加新的换行符\n。删除\n 以避免在循环结构中打印空行。

      【讨论】:

        【解决方案4】:

        print 默认添加尾随换行符。您可以按如下方式禁用它:

        from __future__ import print_function  # only needed for python 2
        print("string", end="")
        

        【讨论】:

          【解决方案5】:

          默认print添加一个换行符,你的字符串也有它;你有两种可能的解决方案。

          要么覆盖此行为,将字符串设置为空:

          # python 3.*
          for x in range(0, 5): print("line \n", end="")
          

          还有

          # python 2.*
          from __future__ import print_function  # to use py3 print in py2
          for x in range(0, 5): print("line \n", end="")
          

          或者,如果您无法完全控制行 - 有些可能有换行符,其他 - 没有,修剪任何换行符结尾并保留默认行为:

          for x in range(0, 5): print("line \n".rstrip("\n").rstrip("\r"))  # takes care of also Windows line ending, just in case
          

          【讨论】:

            【解决方案6】:

            对打印函数的标准调用将自动添加换行符,因此您可以从现有行中删除 \n如果行来自外部文件,请使用 line.strip(),或者告诉 print 不要添加换行符:print(line, end='')

            这适用于 Python3 或 2.7,from __future__ import print_function 作为第一行代码。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-05-28
              • 2017-01-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-10-10
              • 2015-12-29
              相关资源
              最近更新 更多