如何在打印从文件中读取的行时跳过额外的换行符?

时间:2013-06-10 15:40:17

标签: python

我正在从stdin读取我的python程序的输入(我已经将文件对象分配给stdin)。预先不知道输入行数。有时程序可能会获得1行,100行甚至根本没有行。

import sys
sys.stdin  = open ("Input.txt")
sys.stdout = open ("Output.txt", "w")

def main():
    for line in sys.stdin:
        print line

main()

这是我最接近的要求。但这有一个问题。如果输入是

3
7 4
2 4 6
8 5 9 3

打印

3

7 4

2 4 6

8 5 9 3

每行后都会打印一个额外的换行符。我如何修复此程序或解决此问题的最佳方法是什么?

编辑:以下是示例运行http://ideone.com/8GD0W7


EDIT2:感谢您的回答。我知道了这个错误。

import sys
sys.stdin  = open ("Input.txt")
sys.stdout = open ("Output.txt", "w")

def main():
    for line in sys.stdin:
        for data in line.split():
            print data,
        print ""

main()

更改了这样的程序,它按预期工作。 :)

1 个答案:

答案 0 :(得分:10)

python print语句添加换行符,但原始行已经有了换行符。您可以通过在末尾添加逗号来抑制它:

print line , #<--- trailing comma

对于python3,(print成为函数),这看起来像:

print(line,end='') #rather than the default `print(line,end='\n')`.

或者,您可以在打印前删除换行符之前的换行符:

print line.rstrip('\n') # There are other options, e.g. line[:-1], ... 

但我认为这不是那么漂亮。