Seite 1 von 1
mehrzeilige Tabellen in Python?
Verfasst: Donnerstag 18. Oktober 2007, 09:59
von Aquerias
Hallo Leute,
ich habe da mal wieder ein Problem. Ich habe über Google leider nichts herausgefunden und hoffe daher auf Eure Hilfe.
Meine Frage: Kann ich mit Python eine mehrzeilige Tabelle wie in Access erstellen?
Ausgangssituation: Ich habe eine Datenbank in der gibt es eine Tabelle bzw. Spalte mit Werten von A-Z. Diese Werte kommen öfters in der Spalte vor. Ich greife mit Python auf diese Spalte zu und zähle mit count die Anzahl der Buchstaben in der Spalte.
Ziel: Diese ermittelten Werte würde ich jetzt gerne in eine Tabelle oder Liste schreiben (in Python oder Access), falls das geht. Das ganze sollte dann folgendermaßen aussehen:
Gruß
Aquerias
Verfasst: Donnerstag 18. Oktober 2007, 10:10
von Y0Gi
Eine Tabelle erhältst du, wenn du eine zweidimensionale Liste verwendest:
Verfasst: Donnerstag 18. Oktober 2007, 10:50
von Aquerias
Hallo YOGi,
danke für die Antwort.
Sorry habe Deinen Code ausprobiert. Bekomme bei print table aber trotzdem
nur eine Liste in der alle Werte hintereinander stehen.
Ich wollte das ganze gerne mit einer Schleife lösen.
z.B
1. Anzahl von A feststellen.
2. A in Zeile1/Spalte1 und Anzahl von A in Zeile1/Spalte2 der Tabelle eintragen.
3. Index der Tabelle um eins erhöhen.
4. Anzahl von B feststellen.
5. B in Zeile2/Spalte1 und Anzahl von B in Zeile2/Spalte2 der Tabelle eintragen.
6. Index der Tabelle um eins erhöhen.
usw.
Gruß
Aquerias
Verfasst: Donnerstag 18. Oktober 2007, 10:59
von gerold
Hallo Aquerias!
Falls du es in einem GUI ausgeben möchtest. Z.B. mit wxPython:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import wx
import wx.grid
wx.SetDefaultPyEncoding("iso-8859-15")
class MyFrame(wx.Frame):
def __init__(
self, parent = None, title = "Example", size = wx.Size(550, 420),
spaltennamen = None, datenzeilen = None
):
wx.Frame.__init__(self, parent, -1, title, size = size)
panel = wx.Panel(self)
vbox_main = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(vbox_main)
grid = wx.grid.Grid(panel)
vbox_main.Add(grid, 1, wx.EXPAND | wx.ALL, 5)
grid.CreateGrid(len(datenzeilen), len(spaltennamen))
grid.SetColLabelSize(20)
grid.SetRowLabelSize(25)
for index, label in enumerate(spaltennamen):
grid.SetColLabelValue(index, label)
for row, zeilendaten in enumerate(datenzeilen):
for col, value in enumerate(zeilendaten):
grid.SetCellValue(row, col, value)
grid.SetReadOnly(row, col)
def main():
"""Testing"""
app = wx.PySimpleApp()
spaltennamen = (u"Vorname", u"Nachname", u"Ort")
datenzeilen = (
(u"Max", u"Mustermann", u"Bremen"),
(u"Moriz", u"Mustermann", u"Hausen"),
(u"Maria", u"Wurstlbrumpft", u"München"),
(u"Marion", u"Hupfer", u"Telfs"),
(u"Dani", u"Ella", u"Oberhofen"),
) * 20
f = MyFrame(spaltennamen = spaltennamen, datenzeilen = datenzeilen)
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()
mfg
Gerold

Verfasst: Donnerstag 18. Oktober 2007, 11:13
von Aquerias
Hallo gerold,
vielen Dank. Eigentlich möchte ich das ganze nicht als GUI ausgeben.
Ich bin in Python noch ein blutiger Anfänger und Suche nach einer einfachen Möglichkeit Werte aus einer Tabelle mittels Python abzurufen und in eine zweite identische Tabelle einer anderen Datenbank einzutragen. Praktisch eine Aktualisierung einer Tabelle mittels Python.
Die mehrzeilige Tabelle mit der Anzahl der einzelnen Variablen ist nur ein zwischen schritt.
Gruß
Aquerias
Verfasst: Donnerstag 18. Oktober 2007, 14:21
von BlackJack
Wenn es Dir um die *Datenstruktur* und nicht um eine *Anzeige* geht, dann verstehe ich nicht was Du an Y0Gi's Vorschlag mit der verschachtelten Liste auszusetzen hast. Vor allem kannst Du eine Struktur in dieser Richtung mit einer SQL-Abfrage mit ``GROUPBY`` und ``COUNT(*)`` direkt von der Datenbank mit `fetchall()` bekommen.
Andererseits sind andere Strukturen vielleicht günstiger für das was Du mit den Daten dann machen möchtest. Zum Beispiel ein Dictionary, das die Buchstaben auf die Anzahlen abbildet.