Hallo allerseits,
ich glaube ich habe die letzte Version des Programmes einigermassen verstanden.
Nun versuche ich noch etwas an der Ausgabe bzw. an der Formatierung herumzubasteln.
Da die Ausgabe der in einer Liste erfolgt, die nicht Zeilenweise ist habe ich mal versucht die Werte zeilenweise zu gliedern. Gibt bestimmt schönere Lösungen.
Code: Alles auswählen
import csv
from collections import namedtuple
from datetime import datetime as DateTime
from itertools import groupby
from operator import attrgetter
class Record(namedtuple("_Record", "timestamp temperature")):
@property
def date(self):
return self.timestamp.date()
@classmethod
def from_row(cls, row):
return cls(
DateTime.strptime(row[0], "%d.%m.%Y %H:%M"),
float(row[1].replace(",", "." )),
)
def main():
with open(
"/home/bunjul/Schreibtisch/Lösch.csv", newline="", encoding="utf-8"
) as csv_file:
rows = csv.reader(csv_file, delimiter=";")
print(next(rows)) # Skip and print header.
records = map(Record.from_row, rows)
daily_max_temperatures = (
max(group, key=attrgetter("temperature"))
for _, group in groupby(records, attrgetter("date"))
)
x = (list(daily_max_temperatures))
for l in x:
print(l)
if __name__ == "__main__":
main()
Des Weiteren würde ich die "Listenausgabe":
Record(timestamp=datetime.datetime(2023, 1, 2, 16, 33), temperature=88.1)
Record(timestamp=datetime.datetime(2023, 3, 5, 1, 44), temperature=55.4)
Record(timestamp=datetime.datetime(2023, 4, 5, 5, 22), temperature=22.5)
Record(timestamp=datetime.datetime(2023, 5, 5, 10, 22), temperature=33.4)
wie folgt formatieren: 22.12.2023 16:33 , 44.5
Leider fehlt mir hierzu schlichtweg das Wissen, wie ich diese Formatierung umsetzen kann.
Gerne bin ich auch bereit eine kleine Spende zu überweisen, wenn mir jemand die Formatierung schreibt.