为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森王 2023-07-27 14:10:03
我希望我的 Python 代码读取一个仅在一行中包含数字的文件。但这一行不一定是第一行。我希望我的程序忽略所有空行,直到到达第一行数字。该文件将如下所示:在这个例子中,我希望我的Python代码忽略前两行是空的,只抓取第一行。我知道在执行以下操作时我可以阅读第一行:import sys line = sys.stdin.readline()我尝试执行for如下循环来尝试完成它:for line in sys.stdin.readlines():     values = line.split()     rest of code ....但是,如果文件中的数字行为空,我无法使代码正常工作。我确实尝试了一个while循环,但后来它变成了无限循环。关于如何正确跳过空行并仅在第一行非空行上执行特定操作有什么建议吗?
查看完整描述

2 回答

?
森林海

TA贡献2011条经验 获得超2个赞

以下是从给定输入流获取包含某些非空白字符的下一行的函数示例。


您可能希望在未找到任何行的情况下修改确切的行为(例如返回None或执行其他操作而不是引发异常)。


import sys

import re


def get_non_empty_line(fh):

    for line in fh:

        if re.search(r'\S', line):

            return line

    raise EOFError


line = get_non_empty_line(sys.stdin)

print(line)

注意:您可以愉快地多次调用该函数;迭代 ( for line in f:) 将从到达最后一次的地方继续进行。


查看完整回答
反对 回复 2023-07-27
?
慕慕森

TA贡献1856条经验 获得超17个赞

您可能希望使用continue关键字来检查该行是否为空,如下所示:

for line in sys.stdin.readlines():

    if not line.strip(): 

        continue

    values = line.split()

    rest of code ....


查看完整回答
反对 回复 2023-07-27
  • 2 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信