我有一個文本文件,其中相關數據(行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