Python 如何在打印从文件读取的行时跳过额外的换行符?
我正在从stdin读取python程序的输入(我已经为stdin分配了一个file对象)。输入的行数事先不知道。有时程序可能会得到1行、100行甚至根本没有行Python 如何在打印从文件读取的行时跳过额外的换行符?,python,Python,我正在从stdin读取python程序的输入(我已经为stdin分配了一个file对象)。输入的行数事先不知道。有时程序可能会得到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() 这是最接近我的要求。但这有一个问题。如果输
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
它会在每行之后打印一个额外的换行符。如何修复此程序或解决此问题的最佳方法是什么
编辑:以下是运行示例
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
或者,您可以在打印前将换行符从行尾剥离:
print line.rstrip('\n') # There are other options, e.g. line[:-1], ...
但我认为这并没有那么漂亮。或者,当你关心外观时,使用sys.stout.write()而不是打印。Downvoter,请让我知道如何改进这篇文章。我想说两个可能的原因:1。标题有误导性,根本不是关于EOF的处理;2.在EDIT2中,为什么需要拆分?您应该打印
行、
或行.strip()
,但您的代码也会压缩空格。
print line.rstrip('\n') # There are other options, e.g. line[:-1], ...