Trabajando con YAML desde python3: pyyaml

Instalación

En debian/Ubuntu instalamos el gestor de paquetes python pip:

apt-get install python3-pip

E instalamos el páquete:

pip install PyYAML

Con apt en Debian 10:

apt install python3-yaml

Leer un fichero YAML

Si tenemos el fichero books.yaml:

bookstore:
  book: 
  - title: 
    lang: "en"
    text: "Everyday Italian"
    author: "Giada De Laurentiis"
    year: "2005"
    price: "30.00"
    category: "COOKING"
    
  - title: 
    lang: "en"
    text: "Harry Potter"
    author: "J K. Rowling"
    year: "2005"
    price: "29.99"
    category: "CHILDREN"
    
  - title: 
    lang: "en"
    text: "XQuery Kick Start"
    author: 
    - "James McGovern"
    - "Per Bothner"
    - "Kurt Cagle"
    - "James Linn"
    - "Vaidyanathan Nagarajan"
    year: "2003"
    price: "49.99"
    category: "WEB"
    
  - title: 
    lang: "en"
    text: "Learning XML"
    author: "Erik T. Ray"
    year: "2003"
    price: "39.95"
    category: "WEB"

Podríamos hacer un programa como este:

import yaml   
with open("books.yaml") as fichero:
	doc=yaml.load(fichero)

>>> type(doc)
dict

Obteniendo información

Cantidad de libros

>>> len(doc["bookstore"]["book"])
4

Títulos de los libros

for libro in doc["bookstore"]["book"]:
   		print(libro["title"]["text"])

Autores de los libros

for libro in doc["bookstore"]["book"]:
    if isinstance(libro["author"],list):
        for autor in libro["author"]:
            print(autor)
    else:
        print(libro["author"])