解析文本文件列以根据时间

时间:2017-05-24 17:25:18

标签: python file parsing text

我的文本文件由Python脚本生成,该脚本写入: [时间戳],[能源],[距离]

这是来自雷击的数据。

我想运行一个bash或python脚本来加载和解析这个文本文件并输出: A)最后一小时的打击次数(实际上属于最后一小时的时间戳的文件中有多少行) B)一天中每小时的罢工次数(与上述相同,但会输出24个值)

我的示例文本文件如下所示:

2017-05-24 16:29:20,5937,12
2017-05-24 16:30:14,950,12
2017-05-24 16:30:44,3242,12
2017-05-24 16:31:19,2615,12
2017-05-24 16:51:41,8723,24
2017-05-24 18:19:51,5166,27
2017-05-24 18:40:44,1521,37
2017-05-24 18:53:27,9309,24
2017-05-24 18:57:29,13760,20
2017-05-24 19:02:38,35905,12
2017-05-24 19:03:57,3349,12
2017-05-24 19:04:11,4935,12
2017-05-24 19:04:39,14361,12
2017-05-24 19:07:44,2726,12
2017-05-24 19:08:04,6399,12

如果以后更容易使用,我可以调整文本文件的时间格式来写[Y],[m],[d],[H],[M],[S]。 我是Python的新手,所以任何提示都值得赞赏。我不知道如何开始。 感谢

2 个答案:

答案 0 :(得分:1)

首先,请阅读文件,使用file.readlines()进行循环,然后使用.split(',')[0]来提取时间戳。

然后查看datetime module - 我认为datetime.strptime方法会有所帮助。 e.g:

>>> datetime.datetime.strptime("2017-05-24 19:04:11", "%Y-%m-%d %H:%M:%S")
datetime.datetime(2017, 5, 24, 19, 4, 11)

从那里,您可以构建一个数据结构,将数据与日期时间对象相关联,然后按datetime.hour对它们进行排序。

答案 1 :(得分:0)

这是一种可以加载它并生成一致输出的方法。 假设:每个文本文件只能保存24小时的数据!

#!/usr/bin/env python

import csv
import datetime

d = {n: 0 for n in range(1,25)}

with open("lightning.txt", "r") as f:
    filer = csv.reader(f)
    for i in filer:
        d[datetime.datetime.strptime(i[0],"%Y-%m-%d %H:%M:%S").hour] = (datetime.datetime.strptime(i[0],"%Y-%m-%d %H:%M:%S"), i[1], i[2])

for i in range(1,25):
    if d[i] == 0:
        print(str(i).zfill(2) + ':\t0')
    else:
        print(str(i) + ':\t' + str(d[i][2]))