YAML no es lenguaje de marcado (YAML) es un lenguaje de serialización de datos para la mayoría de lenguajes de programación. Entendamos en detalle.
Ñame un superconjunto estricto de JSON, entonces cualquier cosa escrita en JSON se puede analizar para Ñame. 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
or .yml
En este tutorial, aprenderemos sobre los diferentes tipos de datos que están presentes en Ñame y trabajar con YAML en Python. Al final de este tutorial, podrá comprender el YAML y su sintaxis.
Supongo que está familiarizado con Python si no echa un vistazo Recursos de aprendizaje de Python.
El YAML sigue una sintaxis de sangría similar a Python. Pero no permite de la lengüeta (recuérdelo al escribir archivos YAML) para la sangría.
Setup
- Instale un módulo de Python llamado
pyyaml
trabajar con Ñame 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.
- Crea un archivo llamado
learn_yaml.yaml
y practique diferentes ejemplos en él, que vamos a discutir en este tutorial.
Sin más preámbulos, vayamos a la sección de tipos de datos de YAML.
Data Type in YAML
Todo en el Ñame es un valor clave par.
Tenemos un nombre diferente para pares clave-valor en diferentes lenguajes de programación como diccionarios, hashes, 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 que admita YAML.
Veamos diferentes tipos de datos presentes en YAML.
NÚMEROS
Ñame admite 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, octal 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 de los valores octal y hexadecimal ejecutando nuestro script Python. Debería ver la salida exacta de la siguiente manera.
Key: Value
integer: 123
octal: 83
hexa: 291
Otro aspecto interesante de YAML es que podemos representar NAN (no es un número) y Infinity.
not_a_number: .NAN
infinity: .inf
negative_infinity: -.inf
Ejecute la secuencia de comandos 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.
Tangas
Se pueden representar cadenas en YAML 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 escape, entonces 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 utilizado comillas dobles en el siguiente par clave-valor y funciona como se esperaba. Interprete el código YAML anterior con nuestro script 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 múltiples 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 utilizar un pliegue (mayor que>) or bloque (tubería |) carácter para escribir varias líneas.
Cuál es la diferencia entre doblez y bloquear ¿caracteres? Llegando a eso.
Doblez El personaje no interpretará las nuevas líneas, mientras que bloquear 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 la secuencia de comandos de Python, luego verá la diferencia entre doblez y bloquear caracteres. Y no olvide 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 Edición colaborativa y Falso de tres formas diferentes. Míralos.
- Los valores Cierto, encendido y Sí son considerados como Edición colaborativa en YAML.
- Los valores Falso, Apagado, 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 Edición colaborativa 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 bonitas alternativas, ¿verdad? Sí, son 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
Matrices
Podemos especificar las matrices similares 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 cuadrado soportes similar a las listas de Python. Veamos otra forma de representar matrices en YAML (parece listas de rebajas).
programming_languages:
- Python
- JavaScript
- C
- HTML
- CSS
libraries:
- React
- TailwindCSS
Si usa nuestro script Python para interpretar los ejemplos anteriores. Obtendrá el resultado 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 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 resumir rápidamente, los diccionarios son pares clave-valor. Podemos tener cualquier tipo de datos válido como valor para la clave. YAML incluso admite 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?
Kit
YAML admite otro tipo de datos llamado set. El conjunto contiene valores únicos similares al tipo de datos de conjunto de Pythons. Los elementos del conjunto están precedidos por signo de interrogación (?) como elementos de la lista precedidos por guiones (-).
Debemos mencionar que el tipo de datos se establece usando !!conjunto 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 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á la salida exacta como en el ejemplo anterior.
Eso es todo para los tipos de datos en YAML. Veamos algunas características adicionales en YAML.
Comments
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.
Anchors
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
Para concluir
Espero que entiendas bien YAML. Ahora, puede usar YAML en su próximo archivo de configuración de proyecto. Puede consultar el Ñame sitio web oficial para obtener cosas más avanzadas.
Feliz codificación 🙂