CSV Auslesen & Umstrukturieren | Notfall !!!

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
Benutzeravatar
noisefloor
User
Beiträge: 4327
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@Engl.Blackmore:

Der Ansatz ist doch ok. :-) Jetzt noch mit der Transformation von ExDu kombinieren und die Hälfe ist geschafft:

Code: Alles auswählen

import csv
reader = csv.reader(open('mein_csv.csv','r'))
original = []
for r in reader:
    original.append(r)
transformiert = zip(*original)
Jetzt musst du nur noch "transformiert" auf die Platte speichern (am besten mittels csv.writer) und der Teil ist fertig.
Wie man alls .csv-Dateien in einem Verzeichnis "greift zeigt z.B. das Skript von problembär.

Gruß, noisefloor
Engl.Blackmore
User
Beiträge: 5
Registriert: Samstag 4. September 2010, 18:43

Vom Herzen danke für eure Hilfe. Ich hab schon 5 Tafeln Schokolade reingekübelt, 4 Tutorials fast durchgekaut & war gerade dabei eine Entschuldigungsmail zu schreiben aber das könnte die Wende sein....
EyDu hat geschrieben:Vielleicht als kleiner Hinweis zum Transponieren:

Code: Alles auswählen

>>> m = [[1,2,3],
...      [4,5,6],
...      [7,8,9]]
>>> zip(*m)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
Danke
fon77 hat geschrieben:Wenn's schrecklich schnell gehen soll würde ich eher dazu raten, dass Ganze in Excel etc. per Makro zu machen. Den Teil mit Transponieren und löschen der Spalten kannst Du ja einfach aufnehmen und musst dann nur noch was drumherum bauen, dass Deine 400 Dateien nacheinander öffnet und das Makro drauf anwendet.
Auch eine gute Idee aber wer schon "Probleme" mit einer "leichten" Skriptsprache (?) wie Python hat der wird sicherlich auch in der Makroprogrammierung nicht weit kommen. Auch wenn man wenn, wie du schon meintest, Anweisungen "aufnehmen" kann. Das Umdenken würde leider zuviel Zeit kosten.
problembär hat geschrieben:@Engl.Blackmore: Ich kann mit Deiner Aufgabe immer noch nicht viel anfangen: Auf Zeilen in der Ausgangsdatei wie "Mit freundlichen Grüßen" einzugehen, habe ich keinen Bock.
Ich weiß nicht was du genau meinst aber du hast ein Recht darauf kein Bock zu haben. Jedenfalls muss derartiges auch nicht beachtet werden, sowas wird aussortiert und wird nicht benötigt.
problembär hat geschrieben: Dennoch: Das folgende Skript (Python 2.4!) nimmt alle Dateien im Verzeichnis, die auf ".CSV" enden, durchsucht die jeweilige Datei nach Zeilen, die nur aus "Schlüssel;Wert"-Paaren zu bestehen scheinen und schreibt eine entsprechende Datei mit der Endung ".OUT", in der alle "Schlüssel" durch Semikolons getrennt in der ersten Zeile und alle "Werte" (entsprechend getrennt) in der zweiten Zeile stehen, in dasselbe Verzeichnis (in dem auch das Skript sein muß).
Auf Zeilenendungen (verschieden bei Linux (hier) / Windows (bei Dir)) habe ich auch nicht geachtet, sondern das "os.linesep" überlassen.
Keine Ahnung, ob Du so ein Skript brauchen kannst. Deine Verantwortung.
Dafür kann ich dir nicht genug danken. Ich versuchs irgendwie zusammenzuschustern und schaus mir an.
noisefloor hat geschrieben:Hallo,
@Engl.Blackmore: Der Ansatz ist doch ok. :-) Jetzt noch mit der Transformation von ExDu kombinieren und die Hälfe ist geschafft.
Jetzt musst du nur noch "transformiert" auf die Platte speichern (am besten mittels csv.writer) und der Teil ist fertig.
Gruß, noisefloor
Danke dir. Das könnte jetzt doch noch was werden. Die Nacht wird sicherlich lang.

Gruß
problembär

Engl.Blackmore hat geschrieben:
problembär hat geschrieben:@Engl.Blackmore: Ich kann mit Deiner Aufgabe immer noch nicht viel anfangen: Auf Zeilen in der Ausgangsdatei wie "Mit freundlichen Grüßen" einzugehen, habe ich keinen Bock.
Ich weiß nicht was du genau meinst
Z.B. in der Datei "...\Dateien\01. Testdatensätze\210110.CSV" steht:
HRT;
TO;0
TS;1,2
Decelartion capacity;3,96
Acceleration capacity;-4,52

16.08.2010;
Aufzeichnungsdauer ca. 2 Stunden. Einzelne Störungen. Durchgehend Sinusrhythmus. Minimale HF 63 /min, maximale HF 101/min. Vereinzelt supraventrikuläre und ventrikuläre Extrasystolen, keine höhergradige Herzrhythmusstörungen. Es würden keine Bradykardien und keine Pausen über 2 Sekunden Lang detektiert. ;
Lown Klasse 1 . Herzfrequenzentsprechende ST-Strecken-Veränderungen keine Ischämiezeichen. ;

Mit freundlichen Grüßen;


Frau X Y;
Solche von Hand eingefügten Bemerkungen samt "Unterschrift" sind für eine automatische Verarbeitung natürlich sehr hinderlich, weil das Skript sie von den "echten" Daten irgendwie trennen müßte, wofür es Trennkriterien bräuchte. Wenn man die Trennkriterien hat, kann man es programmieren. Hab' ich bei meinem Skriptvorschlag oben aber wie gesagt nicht gemacht (worauf ich ja hinweisen muß).

Gruß
Antworten