CSV-Datei lesen und in anderer Format(ierung) ausgeben



  • Hallo Kollgen,

    ich beschreibe mein Problem erst mal kurz allgemein:

    Ich möchte eine einzelne CSV-Datei lesen und den Inhalt in zwei Ausgabedateien, mit jeweils anderer Formatierung und Informationsgehalt wieder ausgeben.

    Nebenbedingungen:
    Das Programm muss später so ausgelegt sein das es CSV-Dateien mit verschiedenen Spalten und Zeilenanzahl Händeln kann.
    Meine CSV-Datei besitzt immer einen Header (Spaltenüberschriften).

    Beispielhafte CSV-Datei:

    Index;1#I [mA];2#I [mA]
    0;-5.598829997;16.11789035
    1;-6.464529004;16.15676469
    2;-7.3289005;16.15664972
    3;-8.15512162;16.1055859
    4;-8.989964346;16.02810204
    5;-9.792971332;15.91603248
    6;-10.57633566;15.76240482
    7;-11.34256758;15.58426151
    8;-12.08163658;15.36207404
    9;-12.78981106;15.11913797
    10;-13.45453543;14.83641459
    11;-14.07102795;14.53418274
    

    Als Ergebnis möchte ich in Ausgabedatei 1 das alle Überschriften und die jeweilige Zeilenanzahl untereinander stehen:

    Index; 12
    1#I [mA]; 12
    2#I [mA]; 12
    

    Der in meinen Augen schwierigere Part ist die gewünschte Ausgabe der zweiten Ausgabedatei.
    In der Ausgabedatei 2 möchte ich das alle Spaltenwerte (ohne Header) nacheinander ausgegeben werden. Siehe Beispiel:

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    -5.598829997
    -6.464529004
    -7.3289005
    -8.15512162
    -8.989964346
    -9.792971332
    -10.57633566
    -11.34256758
    -12.08163658
    -12.78981106
    -13.45453543
    -14.07102795
    16.11789035
    16.15676469
    16.15664972
    16.1055859
    16.02810204
    15.91603248
    15.76240482
    15.58426151
    15.36207404
    15.11913797
    14.83641459
    14.53418274
    

    Kann mir jemand konkret weiterhelfen!?
    Meine Schwierigkeiten habe ich vor allem damit die Datei einzulesen und in eine Struktur bringen die es mir erlaubt die einzelnen Spalten auszugeben.
    (Ich bin was C angeht leider ein newbie 😕 )

    Alternative Frage:

    Kann mir jemand eine gute Bibliothek empfehlen die sich mit CSV Dateien beschäftigt.

    Ich habe es mit libcsv versucht. Meine Ergebnisse waren aber nicht zufriedenstellend.

    Vielen Dank im Voraus für eure Mühen!
    goehte



  • Ich habe es mit libcsv versucht. Meine Ergebnisse waren aber nicht zufriedenstellend.

    🙂
    Docs zu kompliziert?

    Schema zum Selberbauen:

    1.) Wenn du feste Feld-Breiten hast, ist alles recht einfach, weil du
    feste Puffergrößen für die Strings wählen kannst.
    Wenn nicht, lass dir was einfallen.

    2.) Wenn du keine Leerzeichen in den Feldern hast (da kommen dann auf einmal
    Quotes in den Files vor), dann kannst du einfach bis zum nächsten Trennzeichen
    in einen Puffer lesen.

    3.) Wenn 1.) und 2.) gelöst sind, mach dir eine Struktur, die eine Zeile repräsentiert.
    Da drinnen kannst du dann deine Puffer organisieren.
    Einfach verlinken sollte reichen.

    4.) Deine Ausgaben kannst du dann in einer Iteration über die Strukturen zusammenbauen.


Anmelden zum Antworten