Py学习  »  Python

Python:如何在每天的温度值之间迭代,为每天创建json温度数组?

user2778724 • 3 年前 • 1200 次点击  

我有一个数据,包含每15分钟后的温度值(每小时4个值)。我想创建一个json,每天存储96个数组(4*24)的温度数据。 这是我的数据

22-10-2018,01:00:00,7.6,Station1
22-10-2018,01:15:00,9.0,Station1
22-10-2018,01:30:00,6.3,Station1
22-10-2018,01:45:00,4.1,Station1
22-10-2018,02:00:00,4.5,Station1
22-10-2018,02:15:00,7.3,Station1
22-10-2018,02:30:00,6.1,Station1
..
..
..
23-10-2018,01:30:00,6.3,Station2
23-10-2018,01:45:00,4.1,Station2
23-10-2018,02:00:00,4.5,Station2
23-10-2018,02:15:00,7.3,Station2
23-10-2018,02:30:00,6.1,Station2

我希望我的json像

{ Station: Station1,
  Date: 22-10-2018,
  Time:[01:00:00:{temperature:7.6},01:15:00:{temperature:9.0}...]
},
{ Station: Station2,
  Date: 23-10-2018,
  Time:[01:30:00:{temperature:6.3},01:35:00:{temperature:4.0}...]
}..

我对python完全陌生,不知道如何在日期和分钟之间迭代。非常感谢您的帮助。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132002
 
1200 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Tim Roberts
Reply   •   1 楼
Tim Roberts    4 年前

你根本不需要解析日期和时间。它们只是线。 考虑这个解决方案:

import json 

data = """\
22-10-2018,01:00:00,7.6,Station1
22-10-2018,01:15:00,9.0,Station1
22-10-2018,01:30:00,6.3,Station1
22-10-2018,01:45:00,4.1,Station1
22-10-2018,02:00:00,4.5,Station1
22-10-2018,02:15:00,7.3,Station1
22-10-2018,02:30:00,6.1,Station1
23-10-2018,01:30:00,6.3,Station2
23-10-2018,01:45:00,4.1,Station2
23-10-2018,02:00:00,4.5,Station2
23-10-2018,02:15:00,7.3,Station2
23-10-2018,02:30:00,6.1,Station2""".splitlines()

outdata = []
anydata = {}
lastkey = None
for line in data:
    date,time,temp,stn = line.split(',')
    if (stn,date) != lastkey:
        if anydata:
            outdata.append(anydata)
        lastkey = stn,date
        anydata = { "Station": stn, "Date": date, "Temps": [] }
    anydata["Temps"].append( (time,float(temp)) )
outdata.append(anydata)

print(json.dumps(outdata))

这将为每个站/日期组合生成一个元素,该组合包含时间/温度组合列表:

timr@tims-gram:~/src$ python x.py | jq .
[
  {
    "Station": "Station1",
    "Date": "22-10-2018",
    "Temps": [
      [
        "01:00:00",
        7.6
      ],
      [
        "01:15:00",
        9
      ],
      [
        "01:30:00",
        6.3
      ],
      [
        "01:45:00",
        4.1
      ],
      [
        "02:00:00",
        4.5
      ],
      [
        "02:15:00",
        7.3
      ],
      [
        "02:30:00",
        6.1
      ]
    ]
  },
  {
    "Station": "Station2",
    "Date": "23-10-2018",
    "Temps": [
      [
        "01:30:00",
        6.3
      ],
      [
        "01:45:00",
        4.1
      ],
      [
        "02:00:00",
        4.5
      ],
      [
        "02:15:00",
        7.3
      ],
      [
        "02:30:00",
        6.1
      ]
    ]
  }
]