我是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)
但是没有工作,我得到没有数据的数组.任何意见将不胜感激.谢谢!
所有行都是实例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在文件的结尾自身循环结束.
如果你的行包含其他类型的数据,你需要自己进行转换,来自字符串.
| 归档时间: |
|
| 查看次数: |
31572 次 |
| 最近记录: |