Autor Tema: Almacenar datos estructurados con YAML  (Leído 829 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Almacenar datos estructurados con YAML
« en: 16 de Marzo de 2017, 14:41:51 »
Python permite trabajar con facilidad con datos escritos en YAML, que no es más que una forma muy sencilla, concisa y potente de guardar estructuras complejas de datos en formato texto, fácilmente legible y editable.

La librería que permite a Python trabajar con YAML es PyYAML:
Página oficial de PyYAML
Descarga de PyYAML

Esta librería tiene básicamente dos funciones para convertir datos en YAML y para convertir YAML a datos.
En la página de documentación de PyYAML se explica con detalle.


En Python los datos se escribirían así:
Código: Python
  1. datos = {
  2.    'Nombre': ['Arturo', 'Lopez', 'Garcia'],
  3.    'Edad': 38,
  4.    'e-mail': ['arturo@arturo.com', 'arturo@gmail.com', 'arturo@hotmail.com']
  5. }
  6.  

En YAML los mismos datos se pueden escribir así (de forma extendida):
Código: [Seleccionar]
Nombre:
 - Arturo
 - Lopez
 - Garcia
Edad: 38
e-mail:
 - arturo@arturo.com
 - arturo@gmail.com
 - arturo@hotmail.com

O así (de forma resumida):
Código: [Seleccionar]
Nombre: [Arturo, Lopez, Garcia]
Edad: 38
e-mail: [arturo@arturo.com, arturo@gmail.com, arturo@hotmail.com]

Para transformar de uno a otro con Python:
Código: Python
  1. import yaml
  2.  
  3. # Escribir lista en YAML
  4. print yaml.dump({
  5.    'Nombre': ['Arturo', 'Lopez', 'Garcia'],
  6.    'Edad': 38,
  7.    'e-mail': ['arturo@arturo.com', 'arturo@gmail.com', 'arturo@hotmail.com']
  8. })
  9.  
  10. # Leer datos desde código YAML
  11. print yaml.load("""
  12. Nombre:
  13. - Arturo
  14. - Lopez
  15. - Garcia
  16. Edad: 38
  17. e-mail:
  18. - arturo@arturo.com
  19. - arturo@gmail.com
  20. - arturo@hotmail.com
  21. """)
  22.  

YAML se parece mucho a los datos Python a la hora de escribir, pero es todavía más simple. Además YAML se puede leer por multitud de lenguajes, no solo Python, haciendo los datos más portables aún.

YAML incluye también punteros para abreviar la escritura de datos repetidos.

Si quieres guardar muchos datos en un formato legible y sencillo de editar (texto) YAML es tu lenguaje.

Un saludo.
« Última modificación: 16 de Marzo de 2017, 14:48:19 por Picuino »


 

anything