簡體   English   中英

如何在打印從文件中讀取的行時跳過額外的換行符?

[英]How to skip the extra newline while printing lines read from a file?

我正在從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()

改變了這樣的程序,它按預期工作。 :)

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

但我不認為這幾乎是那么漂亮。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM