我有一个要在终端中打印的行列表(来自文本文件)。这是我喜欢的格式(打印行之间没有空行):
>>> 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
答案 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='')
作为第一个代码行。