【发布时间】:2019-05-13 00:24:31
【问题描述】:
我刚刚编写了一个 python 代码,用于从大约 700 个文本文件中提取数据到一个名为 out_data.txt 的文件中
out_data.txt 文件的内容如下所示:
日期时间,V_1,V_2,V_3,V_4,V_5,V_6,V_7
2013-03-17 18:01:48.372,100,884,776,009,6553,ffff,987
2013-03-17 18:02:03.828,876,632,887,008,5423,879,443
2013-05-17 20:13:52.488,543,987,233,112,098,344,123
2013-08-17 23:09:08.171,667,9887,9897,09876,0987,098,0987
2013-01-17 35:06:04.172,267,987,6897,9876,1287,3498,2987
.....
out_data.txt 文件共有 5783374 行,每一行(在标题之后)都以日期时间值开头
但是,我遇到的问题是我编写的代码会从每个单独的文件中提取数据并添加到我的 out_data.txt 文件中,但是正如您在上面看到的那样,这些行不是按日期时间顺序排列的。 我希望让我的线条按日期时间顺序排列,因为我需要绘制这些数据。
任何帮助将不胜感激。
import re #regular expressions
import glob #file management and reading
if __name__ == "__main__": #opening for python
all_header=[] #list declaration
all_values=[] #list declaration
i=0
with open('out_data.txt', 'w') as of: #output file
for infile in glob.glob("/Users/name/Desktop/raw_data/*.txt"): #input file
with open(infile) as fobj:
print "processing file {}".format(infile)
for line in fobj:
data = line.split() #split each line into individual tokens
if len(data)==2 and re.search(r'(\d+-\d+-\d+)', data[0]): #regular expression to identify date and time
header=['datetime'] #column name datetime
values=[data[0]+" "+data[1]] #date+time as one value
else:
header=[d for d in data if data.index(d)%2==0]
values=[d for d in data if data.index(d)%2!=0]
all_header.extend(header)
all_values.extend(values)
if not header:
if i==0:
of.write(','.join(all_header))
i=i+1
of.write("\n")
of.write(','.join(all_values))
all_header = []
all_values = []
of.write("\n")
of.write(','.join(all_values))
我上面给出的示例数据的预期结果是
日期时间,V_1,V_2,V_3,V_4,V_5,V_6,V_7
2013-01-17 35:06:04.172,267,987,6897,9876,1287,3498,2987
2013-03-17 18:01:48.372,100,884,776,009,6553,ffff,987
2013-03-17 18:02:03.828,876,632,887,008,5423,879,443
2013-05-17 20:13:52.488,543,987,233,112,098,344,123
2013-08-17 23:09:08.171,667,9887,9897,09876,0987,098,0987
当然,我真的不知道如何在代码中包含排序元素,或者是否有任何其他方法可以做到这一点。
谢谢!!
【问题讨论】:
-
实际上它似乎没有正确显示我的 out_data.txt 文件的格式: