YAML-Parsing und Python?



Answers

Von http://pyyaml.org/wiki/PyYAMLDocumentation :

add_path_resolver(tag, path, kind) fügt einen add_path_resolver(tag, path, kind) impliziten Tag Resolver hinzu. Ein Pfad ist eine Liste von Schlüsseln, die einen Pfad zu einem Knoten im Darstellungsdiagramm bilden. Pfadelemente können Zeichenfolgenwerte, Ganzzahlen oder Keine sein. Die Art eines Knotens kann str, list, dict oder None sein.

#!/usr/bin/env python
import yaml

class Person(yaml.YAMLObject):
  yaml_tag = '!person'

  def __init__(self, name):
    self.name = name

yaml.add_path_resolver('!person', ['Person'], dict)

data = yaml.load("""
Person:
  name: XYZ
""")

print data
# {'Person': <__main__.Person object at 0x7f2b251ceb10>}

print data['Person'].name
# XYZ
Question

Was ist der beste Weg, um eine YAML-Datei in ein Python-Objekt zu analysieren?

Zum Beispiel, diese YAML:

Person:
  name: XYZ

Zu dieser Python-Klasse:

class Person(yaml.YAMLObject):
  yaml_tag = 'Person'

  def __init__(self, name):
    self.name = name

Ich benutze PyYAML übrigens.




Links