Seite 1 von 1

Modul mit Datentyp Tabelle gesucht

Verfasst: Donnerstag 7. Mai 2009, 21:43
von PB88
Hallo,

ich suche ein Modul, das mir einen Datentyp "Tabelle"
nebst einiger schicker Methoden zur Verfügung stellt.
Sowas wie table.appendrow(...). table.appendcolumn(), etc.
Ich suche weniger etwas für SQL, als mehr etwas universelleres wie eine Exceltabelle.
Kennt jemand sowas?

Danke im voraus.

Gruß

Peter

Verfasst: Donnerstag 7. Mai 2009, 22:01
von problembär
Was Du da beschreibst, ist aber schon ein Datenbankmodul. Das universellste ist wohl "anydbm".

Gruß

Verfasst: Freitag 8. Mai 2009, 08:42
von CM
Hallo und willkommen im Forum!

das ist eine seltsame Beschreibung. Wenn anydbm nicht das sein sollte, was Du suchst, versuche doch mal zu beschreiben *was* Du erreichen willst und nicht *wie*. Gut möglich, das wir dann sagen können, wie das gut geht.

Gruß,
Christian

Verfasst: Freitag 8. Mai 2009, 22:07
von PB88
Hallo, und Danke für den Willkommensgruß!

Zum Grund meiner Frage:
Ich lese mit einem Makro im FEM-Programm Abaqus (hat einen eigenen Python-Kernel) errechnete Datenreihen (unterschiedlich lang) aus, und will dann verschiedenste Reihen zusammengefasst in ein CSV-File schreiben.
Da man in ein CSV-File aber nur zeilenweise schreiben kann, muß ich mir selbst eine Tabelle frickeln (Listen in Liste), und dafür Sorge tragen, das die Anzahl von Zeilen und Spalten immer konsistent ist und entsprechende Leerfelder generieren. Das ist ziemlich aufwändig und fehlerträchtig.
Daher dachte ich an einen Datentyp Tabelle wo ich ganz einfach Spalten oder Zeilen anfügen, einfügen kann, oder einzelne Felder beschreiben kann.
Dieser Datentyp sollte sich dann bei Abfrage als Listen in Liste darstellen.
Ich habe das Problem schon mit unzähligen Schleifen gelöst, aber es wirkt so elegant wie ein Faustkeil ;)

Grüße

Peter

Verfasst: Samstag 9. Mai 2009, 09:09
von cofi
Dann schau dir mal das `csv`-Modul an.
Dass deine Spalten konsistent bleiben, musst du aber selbst übernehmen. Das geht nicht auf magische Weise ;)
Wobei .. mit einem `csv.DictWriter` und einem `collections.defaultdict` könnte das schon hinhaun.

Verfasst: Samstag 9. Mai 2009, 09:16
von hendrikS
Also ich meine, daß man hier schon mit Standardlisten zurechtkommen sollte.

Code: Alles auswählen

[[1,2,3],[4,5,6],[7,8,9]]
Dies ist doch bereits was Du willst. Ich würde mir ne kleine Kasse drumherumschreiben. Kann man doch wunderschön abstrahieren.

Verfasst: Samstag 9. Mai 2009, 12:42
von Dill
ein ähnliches problem hatte ich auch mal.
dummerweise bin ich da nicht auf den dictwriter gekommen und hab mir was zusammengemurkst.


also der kann das ja:

Code: Alles auswählen

In [50]: import StringIO, csv

In [51]: sio=StringIO.StringIO()

In [52]: w=csv.DictWriter(sio, [1,2,3,4], restval='')

In [53]: w.writerow({1:"eins",2:"zwei"})

In [54]: w.writerow({1:"eins",3:"drei"})

In [55]: print sio.getvalue()
eins,zwei,,
eins,,drei,
problem ist nur, dass man vorher schon wissen muss wieviele spalten man maximal hat.

Verfasst: Samstag 9. Mai 2009, 20:16
von problembär
Also, ich würd' mir sowas selbst schreiben.
Und gleich ein paar Methoden für "Lesen von Excel" und "Schreiben nach Excel" (beides über win32com) dazufügen.
Könnte auch ein ganz nettes Modul werden.

Gruß

Verfasst: Samstag 9. Mai 2009, 21:41
von Dill
hört sich interessant an.
die excel-api ist ja sehr schön. da könnte man easy neben den daten (in csv) auch die wichtigsten attribute der tabelle, spalten, zeilen und zellen lesen (und schreiben)

die frage ist nur: was fängt man damit an?

Verfasst: Sonntag 10. Mai 2009, 10:42
von BlackJack
Bevor man etwas selber schreibt, was dann wirklich von Windows und installiertem Excel abhängig ist, könnte man sich auch `pyExcelarator`, und `xlrd` und `xlwt` anschauen.

Ansonsten wäre ein, von Excel unabhängiges, Tabellenmodell sicher interessant, aber das hat man sich halt immer recht schnell selbst implementiert, wenn man es mal braucht.