Hi Marco!
Wenn du deine oben angegebene Yaml-Datenstruktur mit meinem Beispiel vergleichst, dann wirst du erkennen, dass die Struktur überein stimmt.
Warum soll es also wie die untere Struktur aussehen?
Ist schon OK so.
Jeder Yaml-Datensatz spiegelt jetzt ein Dictionary mit zwei Items. "de" und "en". Jeder Item enthält eine Liste. In diesen Listen sind wieder Dictionaries mit mindestens einem Item "begr". Es kann auch zusätzlich noch ein Item ("hinw") im Dictionary sein.
Um diese Yaml-Datei in eine Liste einzulesen, kannst du diesen Code verwenden:
Code: Alles auswählen
import yaml
from pprint import pprint
import random
#-----------------------------------------------------------------
def read_yaml():
"""
Liest den Yaml-Code aus, generiert daraus eine Liste und gibt
einen zufällig ausgewählten Eintrag aus.
"""
DATAFILE = "mein_datenfile.yml"
datalist = []
yamldata = yaml.loadFile(DATAFILE)
for item in yamldata:
datalist.append(item)
del yamldata
# Nur mal so zum Anzeigen
pprint(datalist)
# Einen zufällig ausgewaehlten Datensatz anzeigen
vok_kombi = random.choice(datalist)
# Deutsche Begriffe inkl. Hinweise ausgeben
print
print "=" * 20
for deutscher_begriff in vok_kombi["de"]:
print "Deutscher Begriff:", deutscher_begriff["begr"]
if deutscher_begriff.has_key("hinw"):
print " Hinweis", deutscher_begriff["hinw"]
print "-" * 20
# Englische Begriffe inkl. Hinweise ausgeben
for englischer_begriff in vok_kombi["en"]:
print "Englischer Begriff:", englischer_begriff["begr"]
if englischer_begriff.has_key("hinw"):
print " Hinweis:", englischer_begriff["hinw"]
print "=" * 20
... und achte bitte darauf, dass mein Code mit drei Leerzeichen eingerückt ist. Wenn dein Code mehr oder weniger Leerzeichen zum Einrücken benutzt, dann musst du den Code anpassen.
Was ich meite, war, dass du in deinem Beitrag den Yaml-Code in Zitat-Tags eingeschlossen hast und nicht in Code-Tags. Deshalb stimmen in der Anzeige die Einrückungen nicht. Die Einrückungen sind aber wichtig.
Du kannst selbst geschriebene Beiträge noch einmal bearbeiten indem du auf den "Edit"-Button klickst.
mfg
Gerold