【问题标题】:Python, line iteratorPython,行迭代器
【发布时间】:2013-06-20 03:08:36
【问题描述】:

我正在逐行处理一个文件

for line in mix_files[i]:
    if my_string in line:
       use the next line # How to get the next line

找到包含文本的行后,我需要处理下一行。有没有简单的方法来获取下一行(例如,增加一个迭代器),而不是不太舒服的方法:

get line number -> increment line number -> use the next line

感谢您的帮助。

【问题讨论】:

    标签: python python-3.x iterator line


    【解决方案1】:

    是的,在迭代器上使用next() function

    next_line = next(mix_files[i])
    

    请注意,如果文件没有更多行,这可能会引发StopIteration。您可以告诉next() 改为返回默认值:

    next_line = next(mix_files[i], None)
    

    将返回而不是引发异常。

    【讨论】:

      【解决方案2】:

      Martijn 的反应不错,不过你也可以用 enumerate:

      for j, line in enumerate(mix_files[i]):
          if my_string in line:
              try:
                  next_line = mix_files[i][j+1]
              except IndexError:
                  handle_end_of_file()
              else:
                  do_whatever_with_next_line()
      

      【讨论】:

      • 仅当mix_files[i] 是一个序列时;如果它是一个文件对象,这将不起作用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-01
      • 1970-01-01
      • 2021-10-05
      • 2015-08-24
      • 2015-06-06
      • 1970-01-01
      相关资源
      最近更新 更多