7

我正在从标准输入读取我的 python 程序的输入(我已经为标准输入分配了一个文件对象)。输入的行数事先不知道。有时程序可能只有 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()

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

4

1 回答 1

10

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

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], ... 

但我认为那几乎没有那么漂亮。

于 2013-06-10T15:41:29.620 回答