Seite 1 von 1

Daten von Tupeln aus einer Liste einzeln darstellen

Verfasst: Samstag 2. Oktober 2021, 15:19
von KauliM
Hallo,
bin der Kauli und möchte hier mal eine Frage stellen, bin gerade dabei mich mit
Python und sqlite anzufreunden. (Anfänger mit Ambitionen )
Folgende Funktion ist lauffähig und bringt auch Daten allerdings in einer Liste mit
mehreren Tupeln darin, habe mich da ein wenig festgefahren.
Ich bekomme die Ausgabe nicht so hin, wie ich es gerne hätte, ich hoffe als alte Hasen könnt Ihr mir da weiterhelfen.
Im Codeblock stehen die Ausgaben in Docstrings.......... vielen Dank erst mal im voraus

Code: Alles auswählen

import os, sys, sqlite3


def auslese():
    verbindung= sqlite3.connect("geburtstage.db")
    zeiger = verbindung.cursor()
    zeiger.execute("SELECT nachname, geburtstag FROM personen")
    inhalt = zeiger.fetchall()
    print(type(inhalt))
    print(inhalt)
    verbindung.close()
    
    
    
#Was die Funktion macht:
#Sie gibt die Daten als Liste aus mit mehreren Tupeln als Inhalt
"""
So wird es ausgegeben

[('Schiller', '10.11.1759'), ('Hegel', '27.08.1770'), ('Hölderlin', '20.03.1770'), ('Virchow', '13.10.1821'), ('Goethe', '28.08.1749')]

"""
#Was ich als Ausgabe sehen möchte:
#Die Daten aus den Tupeln heraus einzeln darstellen
"""
Schiller geboren :10.11.1759
Hegel  geboren: 27.08.1770
Hölderlin  geboren: 20.03.1770

"""

Re: Daten von Tupeln aus einer Liste einzeln darstellen

Verfasst: Samstag 2. Oktober 2021, 16:57
von Sirius3
os und sys werden importiert, aber gar nicht benutzt. Die können also weg.
for-Schleifen und Formatstrings sagen Dir was?
Die komplizierte Leerzeichensetzung wird ein Problem werden: nach welchen Regeln werden mal eine und mal zwei Leerzeichen zwischen Name und "geboren" gesetzt und wann ist vor dem Doppelpunkt und wann nach dem Doppelpunkt ein Leerzeichen?

Re: Daten von Tupeln aus einer Liste einzeln darstellen

Verfasst: Samstag 2. Oktober 2021, 18:15
von KauliM
Hi sirius3,
danke für die schnelle Antwort.
die Leerzeichen sollten so aussehen, dh. hinter jedem Wert ein Leezeichen,
hinter dem "geboren"auch eines.

Schiller geboren: 10.11.1759
Hegel geboren: 27.08.1770
Hölderlin geboren: 20.03.1770

for-Schleifen sagen mir was, die Formatstrings noch nicht so ganz..

mein ansatz war folgender:
erst alle Klammern entfernen, danach die Daten aus den Tupeln, ich dachte an string und split.
Das war von wenig Erfolg gekrönt.

Sollte dieser Beitrag doppelt auftauchen, dann bitte einen löschen

Re: Daten von Tupeln aus einer Liste einzeln darstellen

Verfasst: Samstag 2. Oktober 2021, 18:25
von __deets__
Da muss keine Klammer entfernt werden. Da muss einfach nur über die Liste iteriert werden, und die beiden Werte Name und Geburtstag aus dem Tupel geholt werden. Wie man mit Listen, Tupelo und formatstrings umgeht, steht im offiziellen Tutorial.

Re: Daten von Tupeln aus einer Liste einzeln darstellen

Verfasst: Samstag 2. Oktober 2021, 22:45
von KauliM
Hi Leuts,
vielen Dank für die schnelle Hilfe..... ich habe es hinbekommen.
Die Daten werden jetzt genau so ausgegeben wie ich es wollte,
bin immer über die for Schleife gestolpert.

for x in inhalt:
print(x[1],'\n',x[0],x[2])

ich denke das geht noch besser, im Moment ist das aber schon mal ein Erfolg
für den Anfänger mit Ambitionen


Grüsse
Kauli

Re: Daten von Tupeln aus einer Liste einzeln darstellen

Verfasst: Sonntag 3. Oktober 2021, 09:41
von rogerb
@KauliM,

das entspricht ja nicht ganz deinem ersten Post. Hast du noch eine dritte Spalte aus der Tabelle aus gelesen?

Die Liste die dir von fetchall zurück gegeben wird, ist eine Liste von Tupeln. Diese kann man beim Iterieren bequem in aussagekräftige Namen entpacken:

Code: Alles auswählen

for name, geburtsdatum, andere_spalte in inhalt:
    print(f"{name} geboren: {datum}  - {andere_spalte"
Mit dem vorgestellten f kann man variablen einfach in einen string einfügen. Dafür muss man die Variable nur in { } Klammern einfügen.

Re: Daten von Tupeln aus einer Liste einzeln darstellen

Verfasst: Sonntag 3. Oktober 2021, 16:09
von KauliM
rogerb hat geschrieben: Sonntag 3. Oktober 2021, 09:41 @KauliM,

das entspricht ja nicht ganz deinem ersten Post. Hast du noch eine dritte Spalte aus der Tabelle aus gelesen?

----> Das habe ich leider verwechselt :lol: dieser Code war für eine andere Funktion

Die Liste die dir von fetchall zurück gegeben wird, ist eine Liste von Tupeln. Diese kann man beim Iterieren bequem in aussagekräftige Namen entpacken:

Code: Alles auswählen

for name, geburtsdatum, andere_spalte in inhalt:
    print(f"{name} geboren: {datum}  - {andere_spalte"
Mit dem vorgestellten f kann man variablen einfach in einen string einfügen. Dafür muss man die Variable nur in { } Klammern einfügen.
----> Das sieht sehr gut aus , danke Dir :wink: und wieder einiges dazu gelernt ...

grüsse
Kauli