在python中的匹配行之后读取下一行

时间:2015-09-04 13:21:08

标签: python-3.4

我试图在python中匹配后转到下一行。我有一个文件:

ratio of lattice parameters  b/a  c/a
    1.000000000000    1.000000000000
lattice parameters  a b c  [a.u.] 
    9.448629942895    9.448629942895    9.448629942895

所以,当我在行尾有"lattice parameters"时,我会读到下一行(例如9.448629942895 9.448629942895 9.448629942895) 我在做:

#!/usr/bin/python3
import sys

inpf = str(sys.argv[1])
print (inpf)
with open(inpf, "r") as ifile:
    for line in ifile:
        if line.startswith("lattice parameters"):
            print(line.strip())
            next(ifile)
            return next(ifile)

在接受的答案here中。 但是,就我而言,它给出了错误:

python xband.py AlSi2S2.sys 
  File "xband.py", line 11
    return next(ifile)
SyntaxError: 'return' outside function

我在这里做错了什么? NB:我想去看下一行。我对“回归”没有特别的迷恋 我正在使用Python 3.4.2

2 个答案:

答案 0 :(得分:4)

尝试:

with open(inpf, "r") as ifile:
    for line in ifile:
        if line.startswith("lattice parameters"):
            print(next(ifile, '').strip())
  

next(iterator [,default])
从迭代器中检索下一个项目   调用 next ()方法。如果给出了default,则返回if   迭代器已用尽,否则会引发 StopIteration

答案 1 :(得分:1)

您正在函数外部使用return语句。为了使代码工作,你可以删除return next(ifile)行或在脚本中创建一个函数并调用它。