你根本不需要解析日期和时间。它们只是线。
考虑这个解决方案:
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
]
]
}
]