如何使用 sys.stdin 在 python 中仅读取第一个非空行

我希望我的 Python 代码读取一个仅在一行中包含数字的文件。但这一行不一定是第一行。我希望我的程序忽略所有空行,直到到达第一行数字。

该文件将如下所示:

http://img2.mukewang.com/64c20a4d0001f21e04420109.jpg

在这个例子中,我希望我的Python代码忽略前两行是空的,只抓取第一行。

我知道在执行以下操作时我可以阅读第一行:

import sys

line = sys.stdin.readline()

我尝试执行for如下循环来尝试完成它:

for line in sys.stdin.readlines():
    values = line.split()
    rest of code ....

但是,如果文件中的数字行为空,我无法使代码正常工作。我确实尝试了一个while循环,但后来它变成了无限循环。关于如何正确跳过空行并仅在第一行非空行上执行特定操作有什么建议吗?


慕森王
浏览 183回答 2
2回答

森林海

以下是从给定输入流获取包含某些非空白字符的下一行的函数示例。您可能希望在未找到任何行的情况下修改确切的行为(例如返回None或执行其他操作而不是引发异常)。import sysimport redef get_non_empty_line(fh):    for line in fh:        if re.search(r'\S', line):            return line    raise EOFErrorline = get_non_empty_line(sys.stdin)print(line)注意:您可以愉快地多次调用该函数;迭代 ( for line in f:) 将从到达最后一次的地方继续进行。

慕慕森

您可能希望使用continue关键字来检查该行是否为空,如下所示:for line in sys.stdin.readlines():    if not line.strip():         continue    values = line.split()    rest of code ....
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python