【问题标题】:Parse text file columns to show data based on time解析文本文件列以根据时间显示数据
【发布时间】:2017-05-24 17:25:18
【问题描述】:

我的文本文件是由一个 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 的新手,所以任何提示都值得赞赏。我不知道如何开始。 谢谢

【问题讨论】:

  • 你希望它在 Python 中采用什么形式?元组列表?列字典?熊猫数据框?

标签: python file parsing text


【解决方案1】:

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

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

>>> 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 对它们进行排序。

【讨论】:

  • 感谢您的提示。我正在成功解析数据。现在我必须看看如何生成绘图所需的文件。
  • 如果您觉得这个回答成功解决了您的问题,请点对勾接受,以免其他人认为该问题还需要回答:)
【解决方案2】:

这是一种加载它并生成一致输出的方法。 假设:每个文本文件只能保存 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]))

【讨论】:

  • 嘿,就是这个!谢啦!我的意思是对你们两个有帮助的人。我真的很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多