python und yaml

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
newc0mer
User
Beiträge: 15
Registriert: Sonntag 20. Juli 2008, 14:21

hallo!

ich habe ein frage zu yaml. ich habe ein file: beispiel.yml.
darin steht:

Code: Alles auswählen

main:
   sub:
      - entry1
      - entry2
mit yaml.load(open('beispiel.yml') (von PyYAML) kann ich alles rauslesen. aber wie kann ich nur auf sub zugreifen? muss ich da bei load ein parameter mitgeben, welcher auf "sub" verweisst?

ich finde keine guten beispiele bei google. evt weil ich nicht genau was, nach was ich suchen sollte...

gruss
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

So wie ich das gesehen habe baut PyYAML doch ähnlich wie JSON Parser auch eine Struktur auf Dictionyries und Listen basierend auf. Insofern brauchst Du doch nur auf den richtigen Schlüssel zuzugreifen:

Code: Alles auswählen

data = yaml.load(open('beispiel.yml')
print  data["main"]["sub"]
sollte Dir die Elemente entry1 und entry2 als Liste zurückliefern. (ungetestet ;-) )
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

So, nun auch getestet:

Code: Alles auswählen

In [1]: import yaml

In [2]: data = u"""
   ...: main:
   ...:        sub:
   ...:           - entry1
   ...:       - entry2
   ...: """

In [3]: result = yaml.load(data)

In [4]: result
Out[4]: {'main': {'sub': ['entry1', 'entry2']}}

In [5]: result["main"]
Out[5]: {'sub': ['entry1', 'entry2']}

In [6]: result["main"]["sub"]
Out[6]: ['entry1', 'entry2']
newc0mer
User
Beiträge: 15
Registriert: Sonntag 20. Juli 2008, 14:21

hm alles klar. geht bei mir auch. es ist in diesem fall ein array, korrekt? ich wollte mit result('sub') darauf zugreifen...
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

{} ist ein dict und [] eine Liste.
newc0mer
User
Beiträge: 15
Registriert: Sonntag 20. Juli 2008, 14:21

vielen dank!
Antworten