【发布时间】:2018-03-08 09:02:13
【问题描述】:
我有一个文本文件,其中相关数据(行 x 列)仅出现在“开始”和“结束”关键字之间。见下文。我想编写一个可以提取这些数据子集的代码。如果一行以“start”开头,后跟数据,但不跟随后的“end”关键字,那么我想忽略该数据。在下面的示例中,data1 和 data3 相关,但 data2 不相关,因为它没有包含在“start”和“end”关键字中。
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; data; start或start; data; end?请为示例输入发布您的预期输出。