我有一个文本文件,其中相关数据(行x列)仅出现在“开始”和“结束”关键字之间。见下文。我想编写一个可以提取这些数据子集的代码。如果一行以“开始”开始,然后是数据,但没有后续的“结束”关键字,那么我想忽略这些数据。在我的例子中,data1和data3是相关的,但data2并不是因为它没有被“开始”和“结束”关键字所包围。如何从Python中的文本数据文件中提取数据子集
start
data1 (matrix of data) /relevant because data1 is enclosed by "start" and "end"
end
start
data2 (matrix of data) /not relevant because there is no "end"
.
start
data3 (matrix of data) /relevant for same reason as for data1
end
.
.
and so on
我以为我可以这样开始:
with open(file_path,'r') as file:
text = file.readlines()
start_indexes = []
end_indexes = []
for i, line in enumerate(text):
if line.startswith('start'):
start_indexes.append(i)
elif line.startswith('end'):
end_indexes.append(i)
for i in range(len(start_indexes)):
for j in range(len(end_indexes)):
if (start_indexes[i] < end_indexes[j] < start_indexes[i+1]):
print(start_indexes[i],end_indexes[j])
上面的代码给了我两个起始行号和结束行号在有相关数据。这是我有点卡住的地方。我现在如何提取相关数据?在我下面的例子中,它将是data1,data3。我是否以“正确”的方式处理问题?我应该使用熊猫吗?有没有更高效和直接的方法?
行格式始终为ether:'start;数据;开始“或”开始“;数据; end'?请发布您的示例输入的预期输出。 – wwii