• ¡Obtenga la seguridad de la aplicación de la manera correcta! Detectar, proteger, monitorear, acelerar y más ...
  • 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 lengüeta (recuérdelo al escribir archivos YAML) para la sangría.

    Preparar

    • 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.

    Tipo de datos en 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 Infinito.

    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.

    Cuerdas

    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 Verdadero y Falso de tres formas diferentes. Míralos.

    • Los valores Cierto, encendido y son considerados como Verdadero 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 Verdadero 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 - None - como usa Python - None - 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 corchetes 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.

    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 duplicate_data 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 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 🙂