我试图在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
答案 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)
行或在脚本中创建一个函数并调用它。