1

我正在尝试从文件中读取行并在一个有效的循环中打印它们,但是在每个打印语句之后我都会得到换行符。

这是我的课

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

我得到这些空间的原因是什么?

4

3 回答 3

3

当您遍历文件时,产生的行包括行尾的换行符。使用print()带有额外换行符的输出这些行。

您可以使用.strip()从行的开头和结尾删除空格,包括换行符。

如果您只想删除末尾的换行符,请使用line[:-1]line.rstrip('\n')删除它。

最后但同样重要的是,您还可以告诉print()不要添加换行符:

print(line, end='')
于 2012-12-07T17:57:17.453 回答
0

每个print命令都会在末尾自动添加一个换行符。由于您的文件在每行末尾已经有一个换行符(根据定义),您的程序将连续输出两个换行符。

例如,试试这个:

for i in xrange(10):
    print(str(i) + '\n')

您将获得与您的代码具有相同“问题”的东西。

如果要修复该行为,请替换print(line)print(line.rstrip()),这将删除每行末尾的所有空白字符。如果您的行以制表符或空格结尾,这可能会有问题;在这种情况下,使用print line.rstrip('\n'),它只会删除换行符。

于 2012-12-07T17:53:51.913 回答
0

如果您不想要新行,请使用 rstrip。例如:

print(line.rstrip())
于 2012-12-07T17:58:54.463 回答