我正在尝试从文件中读取行并将其打印在循环中,但是我在每个打印语句后都会获得换行符。
这是我的班级
class FileReader:
"""Reads a file from args"""
def __init__(self, args):
input = ''
with open(args, 'r') as rFile:
for line in rFile:
print(line)
我的输入文件是这样的。 ('$'是新行):
12 3$
2$
9$
5$
3 4$
我的输出变为:
12 3
2
9
5
3 4
我得到这些空间的原因是什么?
答案 0 :(得分:3)
当您循环文件时,产生的行包括行尾的换行符。使用print()
输出带有额外换行符的行。
您可以使用.strip()
从该行的开头和结尾删除空格,包括换行符。
如果仅想要删除最后一行,请使用line[:-1]
或line.rstrip('\n')
将其删除。
最后但同样重要的是,您还可以告诉print()
不要添加换行符:
print(line, end='')
答案 1 :(得分:0)
每个print
命令会在结尾处自动添加换行符。由于您的文件在每行末尾都有换行符(根据定义),您的程序将连续输出两个换行符。
例如,试试这个:
for i in xrange(10):
print(str(i) + '\n')
您将获得与您的代码具有相同“问题”的内容。
如果要修复该行为,请将print(line)
替换为print(line.rstrip())
,这将从每行末尾删除所有空白字符。如果你的行以制表符或空格结尾,这可能会有问题;在这种情况下,请使用print line.rstrip('\n')
,这只会删除换行符。
答案 2 :(得分:0)
如果您不想要新行,请使用rstrip。例如:
print(line.rstrip())