Python 从匹配的下一行读取值
我试图从文件中获取晶格参数,如 系统名:Python 从匹配的下一行读取值,python,Python,我试图从文件中获取晶格参数,如 系统名: lattice parameter A [a.u.] 8.069100000000 我必须从比赛的下一行中找到号码。我将脚本编写为: with open(sysname, "r") as sysinp: for line in sysinp: if line.startswith("lattice parameter A"): next(sysinp)
lattice parameter A [a.u.]
8.069100000000
我必须从比赛的下一行中找到号码。我将脚本编写为:
with open(sysname, "r") as sysinp:
for line in sysinp:
if line.startswith("lattice parameter A"):
next(sysinp)
print(line.strip())
我希望next()
转到下一行,但不幸的是,这并没有发生print()
正在打印匹配行
我在这里干什么?这应该有帮助:
line = next(sysinp)
在代码中,您不使用next()
读取的行,但仍然使用
循环的前一行,即匹配行
整个代码片段:
with open(sysname, "r") as sysinp:
for line in sysinp:
if line.startswith("lattice parameter A"):
line = next(sysinp)
print(line.strip())
您已获得下一行,但尚未为其分配任何内容。您需要使用line=next(sysinp)
,而不仅仅是next(sysinp)
。您也可以只使用print(next(sysinp).strip())
。您需要捕获下一行:
with open(sysname, "r") as sysinp:
for line in sysinp:
if line.startswith("lattice parameter A"):
try:
line = next(sysinp)
print(line.strip())
except StopIteration:
# handle the case where there is no next line