Informationen aus txt.files in tabellarischer Form

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
greendye
User
Beiträge: 3
Registriert: Samstag 26. April 2008, 16:42

Samstag 26. April 2008, 17:29

Hallo!


ich habe zwar brav die Such-Funktion benutzt und auch den einen oder anderen thread dazu gefunden (z.B. http://www.python-forum.de/topic-14133. ... ht=tabelle), trotzdem taucht mein (spezielles?) Problem noch nicht auf.


Ich mache gerade ein materialwissenschaftliches Praktikum und führe zahlreiche Messungen an oberflächenbehandelten Proben durch. Die Software des Meßgeräts gibt dabei die ganzen nützlichen (und leider auch nutzlosen :evil: ) Informationen in einem txt.file aus, dessen Länge von der Zahl der Meßzyklen und Versuchsparameter abhängt.

Für den Abschlußbericht muß ein Teil der Informationen in tabellarischer Form wiedergegeben werden. Die wichtigen Informationen stehen dabei immer in folgender Art im file:

sample_id PDOT-56a-cadmiumnitride
surface-coating/percentage 45.6
cut-off-criterion/mvolts 3.0178
degradation-coeff_psi 0.00075
broosing-factor 1.0071

und so weiter, zwischen diesen Zeilen steckt dann immer auch noch ein ganzen Haufen anderer Kram, der nicht interessiert.

Insgesamt handelt es sich um etwa 30 Einträge in dieser Art, die aber leider über das gesamte txt.file verteilt sind und nur durch händisches Durchscrollen und Rauskopieren dann in eine Tabelle gepreßt werden können (sch... aufwendig!). :cry:

Ich hab es mittlerweile geschafft, ein kleines Python-Skript zu schreiben, das vorgegebene txt.files durchsucht, die Einträge bei den interessanten Punkten ausliest und in tabellarischer Form angibt. Leider erfolgt die Ausgabe aber in "zeiliger" Form, d.h. die Spalten werden jeweils von den Einträgen "sample_id", "surface-coating/percentage" usw. gebildet, die Angaben zu den einzelnen Messungen dann in einer Zeile ausgegeben, was dann in etwa so aussieht:

sample_id surface-coating/percentage cut-off-criterion/mvolts degradation-coeff_psi broosing-factor usw.
PDOT-56a-cadmiumnitride 45.6 3.0178 0.00075 1.0071 ...usw
PDOT-56b-cadmiumnitride 44.9 3.0566 0.00081 1.0070 ....usw
PDOT-56c-cadmiumnitride 45.0 3.0291 0.00077 1.0070 ...usw
...und viele weitere Einträge.

Nachdem die Tabellen dadurch unhandlich breit werden, wäre es besser, wenn man die Anordnung "um 90° kippen" könnte, d.h. wenn die Namen "surface_id", "surface-coating/percentage" usw. die linke Spalte einer Tabelle darstellen würde und die daran anschließenden Spalten die Einträge aus den entsprechenden txt.files enthalten würden.

Außerdem wäre es nützlich, wenn man immer drei bis vier solcher ausgelesener txt.files in "spaltiger" Form pro Seite aufgeführt hätte (würde dann mit der Einbindung in das LaTex-Dokument leichter).

Hoffe, ich konnte das Problem einigermaßen beschreiben... :roll:

Bin leider Anfänger, noch ziemlich wackelig in Python unterwegs und habe zu diesem Problem leider nichts gefunden bzw. auch keine wirkliche Vorstellung, wie sowas gehen könnte.

Hat jemand schonmal so ein Problem gelöst oder könnte sich vorstellen, wie das geht? Oder kann man sowas mit Python gar nicht machen?


Schon mal Danke!

Chris
(leicht verwirrt...)
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Samstag 26. April 2008, 18:30

Hallo greendye,

du könntest die Datei mit readlines() einlesen. dann hast du alle Zeilen in einer Liste.
Diese Zeilen können dann per line.split an den Leerstellen getrennt werden:

Code: Alles auswählen

>>> line = "sample_id surface-coating/percentage cut-off-criterion/mvolts degradation-coeff_psi broosing-factor"
>>> line_entrys = line.split()
>>> line_entrys
['sample_id', 'surface-coating/percentage', 'cut-off-criterion/mvolts', 'degradation-coeff_psi', 'broosing-factor']
ansonsten bietet sich das Mpdul csv an.
Dazu gibt es viele Beispiele im Forum.
greendye
User
Beiträge: 3
Registriert: Samstag 26. April 2008, 16:42

Sonntag 27. April 2008, 18:01

schonmal vielen Danke, werde mal versuchen, ob ich das umsetzen kann! :D


..kann aber sein, daß ich nochmal ein paar dumme Fragen habe :oops:
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Montag 28. April 2008, 11:32

greendye hat geschrieben:Außerdem wäre es nützlich, wenn man immer drei bis vier solcher ausgelesener txt.files in "spaltiger" Form pro Seite aufgeführt hätte (würde dann mit der Einbindung in das LaTex-Dokument leichter).
Wenn du die Daten erstmal mit dem obigen Tipp in "Matrix"-artiger Struktur eingelesen hast (in Python wuerde man das in eine Liste von Listen abbilden, also eine Liste von "Zeilen"), hast du schon halb gewonnen. Dann koenntest du die LaTeX-Tabellen auch gleich von deinem Script erstellen lassen. :)

Alternativ kannst du dir zum Einlesen auch mal das [mod]csv[/mod]-Modul anschauen.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Antworten