问题描述
我有大约 3000 个数据文件(以 .witsml 格式在记事本中打开,如下所示)。我想提取显示的两条红线包围的时间和数据集。每个文件都有相同的行数。
这里的问题是每个文件都包含不同时间戳的数据。因此,从一个文件中提取所需的数据后,我需要将它们放在 Excel 工作表列中。然后下一个文件数据,解压后放到下一列,依此类推。
我有 Python 和 Matlab 的初级知识。考虑到这一点,会推荐将所有这些 3k 文件转换为并排列的 .csv 格式的代码结构吗? enter image description here
解决方法
简短地看一看并阅读此类文档的文档,这似乎是一种 XML 格式。
例如我发现了这个 about loading xml to pandas
从数据框中,您可以通过
简单地将其保存到 csvpandas.DataFrame.to_csv()
你尝试过这样的事情吗? 无论如何,pandas 也有用于日期戳的内置函数。
由于直接加载似乎有一些困难,您可以尝试通过 python 读取文件,例如:
from datetime import datetime
def process_time(timestring):
# extract time data here - if every file is same,always pass third line
# make use of datetime if helpfull e.g. strptime
return datestamp
def process_data(datastringlist):
# IN: list with all lines with data in it
datalist = []
for dataline in datastringlist:
start = dataline.find('<data>')
end = dataline.find('</data>')
data = dataline[start+len('<data>'):end]
datalist.append(data)
return datalist
if __name__ == '__main__':
with open('myfile.xml','r') as f:
linelist = f.readlines()
dstamp = process_time(linelist[2]) # if time is always there
datalist = process_data(linelist[9:]) # maybe check before where <data> starts