Seite 1 von 1

Addieren von CSV Daten

Verfasst: Donnerstag 10. Februar 2022, 22:22
von techpirat
Hallo, ich importiere eine csv Datei und möchte diese gerne zusammen Rechnen. Dabei habe ich zwei Herausforderungen. Aber erstmal der Code:

Code: Alles auswählen

import csv
CSV_path = 'daten.csv'
with open('daten.csv') as csvdatei:
    csv_reader_object = csv.reader(csvdatei, delimiter=';')

    zeilennummer = 0
    for row in csv_reader_object:

        if zeilennummer == 0:
            print()
        else:
            print(f'{row[0]} \t|{row[7]} \t| Produkt Bezeichnung: {row[14]}.')
                       
        zeilennummer += 1
        
    print(f'Anzahl Datensätze: {zeilennummer-1}')
Die Ausgabe ist dann wie folgt:

Name1 |0,47 | Produkt Bezeichnung: Musterprodukt ~0,23.
Name4 |0,48 | Produkt Bezeichnung: Musterprodukt ~0,33.
Name33 |0,47 | Produkt Bezeichnung: Musterprodukt ~0,23.
usw.
Anzahl Datensätze: 84

Ich würde gerne die Werte in den jeweiligen Spalten addieren am Ende ausgeben um diese dann von einander abzuziehen.
Beispiel 0,47 - 0,23 = 0,24
Die zweite Herausforderung ist die Ausgabe der Spalte 14 dort ist der Text gefolgt von der Zahl die zu berechnen ist. Da wir aber immer die Tilde als Trenner haben ist es doch sicher möglich zu sagen das nur der Wert nach der Tilde ausgegeben werden soll oder?

Ich würde mich freuen wenn einer Helfen würde.

Re: Addieren von CSV Daten

Verfasst: Donnerstag 10. Februar 2022, 22:42
von Sirius3
Wo ist dass konkrete Problem? Dass Du rechnen kannst, hast Du ja schon durch die Zeilennummer gezeigt. Strings haben viele hilfreiche Methoden, einfach mal in der Dokumentation nachlesen.

Zeilennummern zählt man übrigens nicht selbst, sondern benutzt `enumerate`. Wenn die erste Zeile ignoriert werden soll, dann macht man das vor der for-Schleife und nicht innerhalb:

Code: Alles auswählen

import csv

with open('daten.csv') as csvdatei:
    csv_reader = csv.reader(csvdatei, delimiter=';')
    _ = next(csv_reader)
    forzeilennummer, row in enumerate(csv_reader, 1):
        print(f'{row[0]} \t|{row[7]} \t| Produkt Bezeichnung: {row[14]}.')
    print(f'Anzahl Datensätze: {zeilennummer}')

Re: Addieren von CSV Daten

Verfasst: Donnerstag 10. Februar 2022, 23:00
von techpirat
Erstmal danke für die schnelle Antwort. Schöner schlanker Code. Danke schon mal dafür.
Mir ist halt nicht klar wie ich die Einzelnen Zahlen z.B. in Spalte 7 Addiere und am Ende Ausgebe um weiter Berechnungen damit zu machen
Zeilen Zählen ist ja einfach :)
Dann ist mir auch nicht klar wie ich den Wert hinter der Tilde extrahiere um den von der Spalte 7 für die weiteren Berechnungen abzuziehen.

Ich hoffe das macht es ein wenig klarer....

Re: Addieren von CSV Daten

Verfasst: Freitag 11. Februar 2022, 00:01
von __blackjack__
@techpirat: Erst mal bekommst Du keine Zahlen sondern Zeichenketten, die müsstest Du in einer Zahl umwandeln im Falle von Spalte 8. Dazu gibt es eine Funktion. Und wie es aussieht, musst Du dazu vorher die Zeichenkette noch geringfügig anpassen. Sirius3 hat ja schon auf Zeichenkettenoperationen hingewiesen. Schau Dir mal an was es da so gibt, und probiere die auch mal aus um eine Idee zu bekommen was es da so alles gibt.

Bei dem Wert mit der Tilde aus Spalte 15 kommt es ein bisschen darauf an wie das tatsächlich aussieht. Ist das immer an der Stelle in der Zeichenkette? Dann kann man das mit Zeichenkettenoperationen bekommen. Ein etwas grösseres Geschütz wären reguläre Ausdrücke, für die es in der Standardbibliothek das `re`-Modul gibt.