解析纯文本文件中的时间戳,并按每隔5分钟计算一次

时间:2011-06-29 18:25:22

标签: python

我的输入是一个包含6,000个时间戳的纯文本文件,如下所示

2011-06-21 13:17:05,905
2011-06-21 13:17:11,371
2011-06-21 13:17:16,380
2011-06-21 13:17:20,074
2011-06-21 13:17:20,174
2011-06-21 13:17:24,749
2011-06-21 13:17:27,210
2011-06-21 13:17:27,354
2011-06-21 13:17:29,231
2011-06-21 13:17:29,965
2011-06-21 13:17:32,100
2011-06-21 13:17:32,250
2011-06-21 13:17:45,482
2011-06-21 13:17:51,998
2011-06-21 13:18:03,037
2011-06-21 13:18:04,504
2011-06-21 13:18:10,019
2011-06-21 13:18:27,434
2011-06-21 13:18:29,960
2011-06-21 13:18:30,525
...

我的输出应该是一个CSV文件,计算从“整个小时”开始每5分钟插槽之间找到多少行

示例输出:

From, To, Count
13:00:00, 13:04:59, 0
13:05:00, 13:09:59, 0
13:10:00, 13:14:59, 19
13:15:00, 13:19:59, 24
...

谢谢!

1 个答案:

答案 0 :(得分:3)

这是未经测试的,您必须自己实施时间转换功能。您必须在时间模块中查找执行所需操作的功能。 convert_time_string_to_unix_time应该将时间字符串转换为自1970年1月1日以来相应的毫秒数(标准Unix时间戳)。

它的作用基本上是将时间划分为五分钟的时隙,循环遍历所有时间戳,并为每个找到的时间戳增加该时间戳插槽的时间戳数量。然后它只迭代所有找到的插槽并将它们转换回时间戳,并打印为该插槽找到的时间戳数。

SLOT_LENGTH = 1000 * 60 *5
for line in file:
    slot = convert_time_string_to_unix_time(line) / SLOT_LENGTH
    bucket[slot] = bucket.get(slot, 0) + 1

for slot in sorted(bucket.keys()):
    print(
        convert_unix_time_to_time_string(slot * SLOT_LENGTH),
        convert_unix_time_to_time_string((slot + 1) * SLOT_LENGTH - 1),
        bucket[slot]
    )