Introducción a YAML en Python para principiantes

YAML no es lenguaje de marcas (YAML) es un lenguaje de serialización de datos para la mayoría de los lenguajes de programación. Entendamos en detalle.

YAML un superconjunto estricto de JSONasí que cualquier cosa escrita en JSON se puede analizar para YAML. Se usa principalmente para archivos de configuración en proyectos y es muy fácil de entender y leer el código.

La extensión de archivo para archivos YAML es .yaml o .yml

En este tutorial, aprenderemos sobre los diferentes tipos de datos que están presentes en YAML y funcionan con YAML en Python. Al final de este tutorial, podrá comprender el YAML y su sintaxis.

El YAML sigue una sintaxis de sangría similar a Python. Pero, no permite pestaña (recuérdelo mientras escribe archivos YAML) para la sangría.

Configuración

Instale un módulo de Python llamado pyyaml ​​para trabajar con YAML archivos

pip install pyyaml

Copie y pegue el siguiente código en un archivo y guárdelo como yaml_script.py

import yaml

yaml_file = open("learn_yaml.yaml", 'r')
yaml_content = yaml.load(yaml_file)

print("Key: Value")
for key, value in yaml_content.items():
    print(f"{key}: {value}")

Usaremos el script anterior para convertir el código YAML a Python y verificar diferentes tipos de datos. Cree un archivo llamado learn_yaml.yaml y practique diferentes ejemplos en él, que vamos a discutir en este tutorial.

Sin más preámbulos, pasemos a la sección de tipos de datos de YAML.

Tipo de datos en YAML

todo en el YAML es un valor clave par.

Tenemos un nombre diferente para pares clave-valor en diferentes lenguajes de programación como diccionarios, hash, objetos, etc. Estos son bloques de construcción de YAML.

Las claves pueden ser cadenas (entre comillas o normales), flotantes o enteros (el soporte puede cambiar en una actualización futura). Y los valores pueden ser de cualquier tipo de datos compatible con YAML.

Veamos los diferentes tipos de datos presentes en YAML.

Números

YAML admite números enteros, números flotantes y números flotantes exponenciales.

integer: 123
float: 123.123
exponential_float: 1.34e+3

Cuando evalúe el código anterior con el script de Python, obtendrá el resultado de la siguiente manera.

Key: Value
integer: 123
float: 123.123
exponential_float: 1340.0

Podemos representar los valores en diferentes sistemas numéricos como decimal, octales, y hexadecimal.

El líder cero (0) representa que es un número octal. el prefijo 0x representa su valor hexadecimal.

Vea el ejemplo a continuación.

integer: 123
octal: 0123
hexa: 0x123

Podemos ver los valores decimales convertidos del valor octal y hexadecimal ejecutando nuestro script de Python. Debería ver el resultado exacto de la siguiente manera.

Key: Value
integer: 123
octal: 83
hexa: 291

Otra cosa interesante de YAML es que podemos representar NAN (no es un número) y infinito.

not_a_number: .NAN
infinity: .inf
negative_infinity: -.inf

Ejecute el script de Python, verá los valores convertidos de YAYA, y inf a Python.

Key: Value
not_a_number: nan
infinity: inf
negative_infinity: -inf

Eso es todo para los tipos numéricos en YAML.

Instrumentos de cuerda

Las cadenas en YAML se pueden representar con o sin comillas. Ambos son similares. A diferencia de JSON, no existe una regla estricta para poner cada cadena entre comillas. Pero, si necesitamos usar el secuencias de escapeentonces debemos usar doble comillas.

Veamos algunos ejemplos de cadenas.

string: Hi, there I am a string
string with escape character: Hi, I am a newline \n character. And I am not working :(
string with working escape character: "Hi, I am a newline \n character. And I am working :)"

El carácter de nueva línea en el par clave-valor de la sección funciona como se esperaba. Como ya dijimos, necesitamos usar comillas dobles para trabajar con secuencias de escape.

Hemos usado comillas dobles en el siguiente par clave-valor y funciona como se esperaba. Interprete el código YAML anterior con nuestro script de Python. Obtendrá el resultado de la siguiente manera.

Key: Value
string: Hi, there I am a string
string with escape character: Hi, I am a newline \n character. And I am not working :(
string with working escape character: Hi, I am a newline 
character. And I am working :)

Hay dos caracteres especiales en YAML que podemos usar para escribir varias oraciones como valor para una clave. Digamos que tenemos que dividir una oración larga en varias líneas. En este tipo de escenario, podemos usar un doblar (mayor que >) o bloque (tubo |) carácter para escribir varias líneas.

Cuál es la diferencia entre pliegue y cuadra ¿caracteres? Llegando a eso.

Pliegue carácter no interpretará las nuevas líneas, mientras que cuadra el personaje lo hace.

Veamos los ejemplos.

multiple lines string with fold character: >
  This is a
  multiple line
  string with fold
  character. Remember to use
  indentation. Newlines won't be
  interpreted.
multiple lines string with block character: |
  This is a
  multiple line
  string with fold
  character. Remember to use
  indentation. Newlines will be
  interpreted.

Ejecute el script de Python, luego verá la diferencia entre el pliegue y cuadra caracteres. Y no te olvides de usar sangría.

Key: Value
multiple lines string with fold character: This is a multiple line string with fold character. Remember to use indentation. Newlines won't be interpreted.

multiple lines string with block character: This is a
multiple line
string with fold
character. Remember to use
indentation. Newlines will be
interpreted.

Booleanos

En YAML, podemos representar el valor booleano Cierto y Falso de tres maneras diferentes. Míralos.

Los valores Cierto, encendido, y son considerados como Cierto en YAML. Los valores FalsoApagado, y No son considerados como Falso en YAML.

random_key_1: True
random_key_2: On
random_key_3: Yes
random_key_4: False
random_key_5: Off
random_key_6: No

Si interpreta el código YAML anterior, obtendrá los primeros 3 valores clave como Cierto y los siguientes 3 valores clave como Falso.

Key: Value
random_key_1: True
random_key_2: True
random_key_3: True
random_key_4: False
random_key_5: False
random_key_6: False

Nulo

YAML admite el valor nulo similar a JSON. Podemos usar la palabra clave nulo o el símbolo tilde(~) para definir el valor nulo en YAML. YAML tiene buenas alternativas, ¿verdad? Sí, son un poco geniales.

null_case_1: null
null_case_2: ~

Ejecute la secuencia de comandos de Python. Obtendrá ambos valores como Ninguna como usa Python Ninguna en vez de nulo palabra clave.

Key: Value
null_case_1: None
null_case_2: None

arreglos

Podemos especificar las matrices de forma similar a Python en YAML. O podemos escribir todos los elementos de la matriz en líneas separadas precedidas guión (-). Veamos un ejemplo para cada representación.

programming_languages: [Python, JavaScript, C, HTML, CSS]
libraries: [React, TailwindCSS]

En el código YAML anterior, hemos utilizado corchetes similar a las listas de Python. Veamos otra forma de representar arreglos en YAML (parecen listas de rebajas).

programming_languages:
  - Python
  - JavaScript
  - C
  - HTML
  - CSS
libraries:
  - React
  - TailwindCSS

Si usa nuestro script de Python para interpretar los ejemplos anteriores. Obtendrá la salida de la siguiente manera.

programming_languages: [Python, JavaScript, C, HTML, CSS]
libraries: [React, TailwindCSS]

Podemos tener diccionarios en la lista no solo cadenas, números, etc.,

programming_languages:
- Python:
author: Guido van Rossum
- JavaScript:
author: Brendan Eich
- C:
author: Dennis Ritchie
libraries:
- React:
popularity: High
- TailwindCSS:
popularity: High

Obtendrá una variedad de diccionarios si interpreta el código YAML anterior con nuestro script de Python.

Key: Value
programming_languages: [{'Python': {'author': 'Guido van Rossum'}}, {'JavaScript': {'author': 'Brendan Eich'}}, {'C': {'author': 'Dennis Ritchie'}}]
libraries: [{'React': {'popularity': 'High'}}, {'TailwindCSS': {'popularity': 'High'}}]

Diccionarios

Ya hemos visto la sintaxis de los diccionarios en los ejemplos anteriores. Para recapitular rápidamente, los diccionarios son pares clave-valor. Podemos tener cualquier tipo de dato válido como valor para la clave. YAML incluso es compatible con los diccionarios anidados.

Veamos un ejemplo.

dictionary:
  i am key: i am value

nested dictionary:
  nested key:
    i am nested key: i am nested value

Interprete el código anterior y verá el mismo resultado de la siguiente manera.

Key: Value
dictionary: {'i am key': 'i am value'}
nested dictionary: {'nested key': {'i am nested key': 'i am nested value'}}

¿Sabes que puedes convertir una lista en un diccionario en Python?

Colocar

YAML admite otro tipo de datos llamado conjunto. El conjunto contiene valores únicos similares al tipo de datos del conjunto de Python. Los elementos establecidos están precedidos por el signo de interrogación (?) como elementos de la lista precedidos por guiones (-).

Necesitamos mencionar que el tipo de datos se establece usando !!colocar después del nombre del conjunto.

mira el siguiente ejemplo.

i am a set: !!set
  ? 1
  ? 2
  ? 2
  ? 3

Como el conjunto contiene solo valores únicos, no obtendrá 2 dos veces cuando interpreta el código YAML anterior con nuestro script de Python.

Veamos el resultado.

Key: Value
set: {1, 2, 3}

También podemos representar el conjunto similar a la sintaxis de Python de la siguiente manera.

i am a set: !!set
  {1, 2, 2, 3}

Obtendrá el resultado exacto como el ejemplo anterior.

Eso es todo para los tipos de datos en YAML. Veamos algunas características adicionales en YAML.

Comentarios

YAML admite comentarios. Es genial. Podemos escribir comentarios en YAML comenzando con un hash (#) símbolo.

# I am a comment
yaml is great: # I am a comment too

Si interpreta el código YAML anterior, obtendrá una clave vacía con un valor nulo.

Key: Value
yaml is great: None

YAML no admite comentarios de varias líneas. Tenemos que escribir varias líneas comenzando con un hash para comentarios de varias líneas similares a Python.

anclas

anclas nos permite copiar el contenido de una clave donde queramos en todo el documento. Esto es muy útil si desea duplicar algún contenido en el documento.

Para usar anclas, tenemos que definir un nombre como nombre de variable en lenguajes de programación. Y luego podemos usarlo en todo el documento donde queramos.

Podemos definir el nombre del ancla usando & y usarlo con *. Veamos un ejemplo.

# duplicate_data is the name of the anchor
data: &duplicate_data This content is to duplicate

# dopying the data
duplicate_data: *duplicate_data

En el ejemplo anterior, hemos utilizado un datos_duplicados ancla para copiar el valor del datos llave. Ambas claves contienen los mismos valores si interpreta el YAML anterior.

Key: Value
data: This content is to duplicate
duplicate_data: This content is to duplicate

Conclusión

Espero que hayas entendido bien YAML. Ahora, puede usar YAML en su próximo archivo de configuración del proyecto. Puede consultar el sitio web oficial de YAML para obtener cosas más avanzadas.

Codificación feliz 🙂

Publicaciones relacionadas

Botón volver arriba