打印多行,行之间没有空格

时间:2017-09-17 05:28:31

标签: python python-2.7

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

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

它的外观(带有文字的行,空行等):

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

line 

line 

line 

line

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

UPDATE(这是我想摆脱空行的地方):

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

6 个答案:

答案 0 :(得分:1)

使用for循环时,您可以删除" \ n"如下

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

由于您正在阅读文件的方式,这实际上是。如果您已经完成了

之类的事情
from __future__ import print_function

然后with open(FILE) as f: data = f.readlines() 将是保留行尾字符的行列表。如果您不想要行尾字符,请改用:

data

如果您不想改变将数据读入列表的方式,那么请连接并打印这样的行:

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

要回答文字问题,如果你有一个带换行符的字符串,并且你想要抑制print语句生成的换行符,那么在Python 2中这样做的方法是在print语句中使用一个尾随逗号:

print ''.join(data)

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

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

答案 4 :(得分:1)

默认情况下,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

答案 5 :(得分:0)

对打印功能的标准调用将自动添加换行符,以便您可以从现有行中删除\n如果行来自外部文件则使用{{1} } ,或告诉print不要添加换行符:line.strip()

这适用于Python3或2.7,print(line, end='')作为第一个代码行。