Python循环读取数据的文本文件

jea*_*pez 4 python loops

我是python的新手,虽然我确信这可能是一个微不足道的问题,但我花了一天时间试图以不同的方式解决这个问题.我有一个包含如下所示数据的文件:

<string>
<integer>
<N1>
<N2>
data
data
...
<string>
<integer>
<N3>
<N4>
data
data
...
Run Code Online (Sandbox Code Playgroud)

这延续了很多次......我需要读取"数据",第一组(第一组和第二组之间)包含数字N1的X点,数字N2的Y点和数字N1*N2 Z点.如果我只有一组数据,我已经知道如何读取所有数据,然后读取值N1,N2,然后将其切成X,Y和Z,重新整形并使用它......但如果我的文件包含更多如果不是一组数据,我如何只从一个字符串读取到下一个字符串,然后对下一个字符串重复相同的操作,并再次直到我到达文件的末尾?我尝试定义一个函数,如:

def dat_fun():
    with open("inpfile.txt", "r") as ifile:
        for line in ifile:
            if isinstance('line', str) or (not line):
                break
            for line in ifile:
                yield line
Run Code Online (Sandbox Code Playgroud)

但是没有工作,我得到没有数据的数组.任何意见将不胜感激.谢谢!

Mar*_*ers 7

所有行都是实例str,所以你在第一行突破.删除该测试,并首先通过剥离空白来测试空行:

def dat_fun():
    with open("inpfile.txt", "r") as ifile:
        for line in ifile:
            if not line.strip():
                break
            yield line
Run Code Online (Sandbox Code Playgroud)

我认为你不需要打破空行,真的; 将for在文件的结尾自身循环结束.

如果你的行包含其他类型的数据,你需要自己进行转换,来自字符串.