Как пропустить дополнительную новую строку при печати строк, прочитанных из файла?

Я читаю ввод для моей программы python из stdin (я назначил файловый объект 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

он печатает дополнительную новую строку после каждой строки. Как исправить эту программу или что лучше всего чтобы решить эту проблему?

EDIT: вот пример выполнения 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 ответов


питон 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], ... 

но я не думаю, что это так красиво.