Seite 1 von 1
Auslesen von Tabellen mit Python
Verfasst: Donnerstag 9. Januar 2003, 10:40
von TrickBen
Hallo,
ich habe ein Problem,
im Zuge einer zu verfassenden Arbeit muss ich eine CSV Tabelle (mit vielen Tausenden
Einträgen) mit Python auslesen können, dass Format der Tabelle lässt sich ja an sich recht
universell ändern. Jedoch fehlt mir die nötige Erfahrung und Intelligenz, ein Modull zu
verwirklichen, dass diese Arbeit übernimmt.
Daher nun die Frage an euch,
hat schon mal jemand etwas ähliches Programmiert oder kann mir auf die Sprünge helfen?
Schonmal im Voraus Danke
Re: Auslesen von Tabellen mit Python
Verfasst: Donnerstag 9. Januar 2003, 11:15
von joerg
TrickBen hat geschrieben:
...im Zuge einer zu verfassenden Arbeit muss ich eine CSV Tabelle (mit vielen Tausenden
Einträgen) mit Python auslesen können...
...hat schon mal jemand etwas ähliches Programmiert oder kann mir auf die Sprünge helfen?
Viele Leute haben sowas schon öfter programmiert. Standardsuchort für Python-Module ist
http://www.vex.net/parnassus , scheint aber gerade down zu sein. Aber selbst wenn Du bei google mal 'Python' und 'CSV' eingibst, bekommst Du viele Links zu entsprechenden Modulen präsentiert.
Falls Du es doch selber machen willst, melde Dich noch mal.
Jörg
Verfasst: Donnerstag 9. Januar 2003, 19:33
von hans
Mal wieder meine Erfahrungen aus Delphi. Da geht soetwas ganz einfach mit TStrings.
In QT gibt es QStringList, welche eine ähnliche Funktion drin hat.
Code: Alles auswählen
QStringList::split ( const QString & sep, const QString & str, bool allowEmptyEntries = FALSE )
sep = Seperator, z. B. ','
str = zu zerlegender String
allowEmptyEntries = leere Felder (zwei aufeinander folgende Kommas) sind nicht erlaubt
kann eine aus einer Datei gelsene Zeile in die einzelnen Felder zelegen.
Hans
Verfasst: Donnerstag 9. Januar 2003, 19:54
von Voges
Hallo!
hans hat geschrieben:QStringList::split (
Wenn aber QStringList::split() ähnlich simpel gestrickt ist, wie string.split(), hilft das bei CSV-Dateien nicht viel, da Daten in Anführungsstrichen Kommata enthalten können, die string.split() gnadenlos als Trenner interpretiert.
Jan
Verfasst: Donnerstag 9. Januar 2003, 21:27
von hans
Voges hat geschrieben: Wenn aber QStringList::split() ähnlich simpel gestrickt ist, wie string.split(), hilft das bei CSV-Dateien nicht viel, da Daten in Anführungsstrichen Kommata enthalten können, die string.split() gnadenlos als Trenner interpretiert.
Ich muß dir leider recht geben. Ich hatte bis zur Stunde QStringList noch nicht ausprobiert. Jetzt weiß ich, dass es so nicht geht. Aber es müßte doch ein leichtes sein, eine Textzeile einzulesen, und diese Byte für Byte zu untersuchen. Das erste Anführungszeichen schaltet die Trennung bei Komma aus, das zweite Anführungszeichen wieder zu.
Wie sieht die Regel eigentlich aus, wenn Textfelder Anführungszeichen enthalten?
Und was macht Ihr bei deutschen Computern mit 1,2? Das soll eine Dezimalzahl sein. Die Amis haben es da mit 1.2 leichter.
Hans
Verfasst: Donnerstag 9. Januar 2003, 21:57
von Voges
Hallo!
hans hat geschrieben:Wie sieht die Regel eigentlich aus, wenn Textfelder Anführungszeichen enthalten?
Und was macht Ihr bei deutschen Computern mit 1,2? Das soll eine Dezimalzahl sein.
Wohl die wichtigsten Regeln:
- Enthält ein Datenfeld ein Komma, wird das Datenfeld in Anführungszeichen eingeschlossen.
- Enthält ein Datenfeld ein Anführungszeichen (als Teil der Daten), wird diesem Anführungszeichen ein weiteres Anführungszeichen vorangestellt und das Datenfeld in Anführungszeichen eingeschlossen. Beispiel
Code: Alles auswählen
aus 1 1,34 2342 wird 1,"1,343",2342
aus 3 abc"def 5432 wird 3,"abc""def",5432
Es gibt einige CSV-Module für Python.
http://object-craft.com.au/projects/csv/ sieht z.B. ganz gut aus.
Jan