Einlesen und Konvertieren von Daten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Lienz20013
User
Beiträge: 88
Registriert: Freitag 26. September 2014, 14:42

Schönen guten Tag. Ein neues Messgärt, neue Daten, neuer spass...
Und zwar legt es für jede Messung ein neues csv-file an welches folgendermaßen aussieht:

blabla;;;;
TemperatureSize;1092;;;
0;0;1333333;434345;1
1;1;233333;2342424;42424
2;2;333333;3434343;34343
Date.Year;2015;;;
Date.Month;3;;;
Date.Day;25;;;
Time.Hour;12;;;
Time.Minute;49;;;
Time.Second;57;;;

und ein anderes das so aussieht:

blabla;;;;
[Trace.4];;;;
TemperatureSize;1092;;;
0;0;166666;3434344;15555
1;1;266666;2342424;42424
2;2;366666;3434343;34343
Date.Year;2015;;;
Date.Month;3;;;
Date.Day;25;;;
Time.Hour;12;;;
Time.Minute;59;;;
Time.Second;57;;;

u.s.w.

Ich würde aber gern das, dass alles wie folgt aussieht:

2015-3-25 12:49:57;1333333;2333333;3333333
2015-3-25 12:59:57;166666;266666;366666

Aber ich bekomms nicht hin. Bis jetzt hab ich:

Code: Alles auswählen

directory = r"data/RAMAN_faser/UIT_Temperatur/test/"
files = "*.csv"
filenames = glob.glob(directory + files)
with open('data/RAMAN_faser/data_raman_test.csv', 'w') as outfile:
    for fname in filenames:
       with open(fname) as infile:
           for line in itertools.islice(infile, 2, None):
                outfile.write(line)
Da schreibt er mir die Werte schon einmal uneteinander ohne den Rest. Aber wie ich die gewünschten Werte nacheinander bekomme und dann noch die Zeit davor weiß ich nicht. Wer lässt zu das Daten so ausgegeben werden :evil: ?
Aaaahhh..über Hilfe würde ich mich freuen.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Geh die Quelldatei Zeile für Zeile durch. Anhand dessen womit die Zeile beginnt kannst du erkennen was fü Daten darin nach dem ; enthalten sind.
Am Ende die gewonnen Daten einmal zu einer Zeile klöppeln und fertig.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@Lienz20013: das csv-Module könnte hilfreich sein, dann die Daten einfach in ein Dictionary und passen zusammenklöppeln:

Code: Alles auswählen

measurement = dict(row[:2] for row in measurement_input)
print "{0:04d}-{1:02d}-{2:02d} {3:02d}:{4:02d}:{5:02d};{6};{7};{8}".format(
    measurement["Date.Year"],
    measurement["Date.Month"],
    measurement["Date.Day"],
    measurement["Time.Hour"],
    measurement["Time.Minute"],
    measurement["Time.Second"],
    measurement[0],
    measurement[1],
    measurement[2])
Lienz20013
User
Beiträge: 88
Registriert: Freitag 26. September 2014, 14:42

Ich weiß nicht, ich hab das mal probiert:

Code: Alles auswählen

import csv

directory = r"data/RAMAN_faser/UIT_Temperatur/test/"
files = "*.csv"
filenames = glob.glob(directory + files)
with open('data/RAMAN_faser/data_raman_test.csv', 'w') as csvfile:
       reader = csv.reader(filenames)
       measurement = dict(row[:2] for row in reader)
       print "{0:04d}-{1:02d}-{2:02d} {3:02d}:{4:02d}:{5:02d};{6};{7};{8}".format(
               measurement["Date.Year"],
                measurement["Date.Month"],
                measurement["Date.Day"],
                measurement["Time.Hour"],
                measurement["Time.Minute"],
                measurement["Time.Second"],
                measurement[0],
                measurement[1],
                measurement[2])
aber so läufts nicht.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@Lienz20013: was heißt "läuft nicht"?
BlackJack

@Lienz20013: Programmieren heisst nicht wild herum raten. Da wird doch sehr wahrscheinlich eine Ausnahme ausgelöst. Und dann schaust Du mal in der Dokumentation was die Funktion die sich da beschwert als Argument(e) erwartet und was Du stattdessen übergibst. Dann sollte klar sein warum das so nicht funktioniert.
Antworten