YAML n'est pas un langage de balisage (YAML) est un langage de sérialisation de données pour la plupart des langages de programmation. Comprenons en détail.

YAML un sur-ensemble strict de JSON, donc tout ce qui est écrit JSON peut être analysé en YAML. Il est principalement utilisé pour les fichiers de configuration dans les projets et il est très facile de comprendre et de lire le code.

L'extension de fichier pour les fichiers YAML est .yaml or .yml

Dans ce tutoriel, nous allons en apprendre davantage sur les différents types de données présents dans YAML et travaillez avec YAML en Python. À la fin de ce didacticiel, vous serez en mesure de comprendre le YAML et sa syntaxe.

Je suppose que vous êtes familier avec Python sinon vérifiez Ressources d'apprentissage Python.

Le YAML suit une syntaxe d'indentation similaire à Python. Mais ça ne permet pas languette (souvenez-vous-en lors de l'écriture des fichiers YAML) pour l'indentation.

Setup

  • Installez un module Python appelé le pyyaml travailler avec YAML fichiers.
pip install pyyaml
  • Copiez et collez le code suivant dans un fichier et enregistrez-le sous 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}")
  • Nous utiliserons le script ci-dessus pour convertir le code YAML en Python et vérifier différents types de données.
  • Créez un fichier appelé learn_yaml.yaml et pratiquez différents exemples, que nous allons discuter dans ce tutoriel.

Sans plus tarder, passons à la section des types de données de YAML.

Data Type in YAML

Tout dans le YAML est un valeur clé paire.

Nous avons un nom différent pour les paires clé-valeur dans différents langages de programmation comme les dictionnaires, les hachages, les objets, etc., Ce sont des blocs de construction de YAML.

Les clés peuvent être des chaînes (entre guillemets ou normales), des flottants ou des entiers (le support peut changer dans une future mise à jour). Et les valeurs peuvent être de n'importe quel type de données pris en charge par YAML.

Voyons les différents types de données présents dans YAML.

Nombres

YAML prend en charge les entiers, les nombres flottants et les nombres flottants exponentiels.

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

Lorsque vous évaluez le code ci-dessus avec un script Python, vous obtiendrez le résultat comme suit.

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

Nous pouvons représenter les valeurs dans différents systèmes numériques comme décimal, octal, et un hexadécimal.

  • Le premier zéro (0) représente un nombre octal.
  • Le préfixe 0x représente sa valeur hexadécimale.

Voir l'exemple ci-dessous.

integer: 123
octal: 0123
hexa: 0x123

Nous pouvons voir les valeurs décimales converties de la valeur octale et hexadécimale en exécutant notre script Python. Vous devriez voir la sortie exacte comme suit.

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

Une autre chose intéressante à propos de YAML est que nous pouvons représenter NAN (pas un nombre) et un Infinity.

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

Exécutez le script Python, vous verrez les valeurs converties de NON, et un inf à Python.

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

C'est tout pour les types numériques dans YAML.

Instruments à cordes

Les chaînes en YAML peuvent être représentées avec ou sans guillemets. Les deux sont similaires. Contrairement à JSON, il n'y a pas de règle stricte pour mettre chaque chaîne entre guillemets. Mais, si nous devons utiliser le Séquences d'échappement, alors nous devons utiliser double citation.

Voyons quelques exemples de chaînes.

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 :)"

Le caractère de nouvelle ligne dans la paire clé-valeur de section fonctionne comme prévu. Comme nous l'avons déjà dit, nous devons utiliser des guillemets doubles pour travailler avec des séquences d'échappement.

Nous avons utilisé des guillemets doubles dans la prochaine paire clé-valeur et cela fonctionne comme prévu. Interprétez le code YAML ci-dessus avec notre script Python. Vous obtiendrez le résultat comme suit.

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 :)

Il existe deux caractères spéciaux en YAML que nous pouvons utiliser pour écrire plusieurs phrases comme valeur d'une clé. Disons que nous devons diviser une longue phrase en plusieurs lignes. Dans ce type de scénario, nous pouvons utiliser un pli (supérieur à>) or bloc (tuyau |) caractère pour écrire plusieurs lignes.

Quelle est la différence entre plier et un bloc personnages? Venir à lui.

Plier le personnage n'interprétera pas les nouvelles lignes, alors que bloc le personnage fait.

Voyons les exemples.

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.

Exécutez le script Python, vous verrez alors la différence entre le plier et un bloc personnages. Et n'oubliez pas d'utiliser l'indentation.

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.

Booleans

En YAML, nous pouvons représenter la valeur booléenne Les véritables et un Faux de trois manières différentes. Regarde-les.

  • Les valeurs Vrai, oui, et un Oui sont considérés comme Les véritables dans YAML.
  • Les valeurs Faux, Désactivé, et un Non sont considérés comme Faux dans 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 vous interprétez le code YAML ci-dessus, vous obtiendrez les 3 premières valeurs de clé comme Les véritables et les 3 valeurs clés suivantes comme Faux.

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

Null

YAML prend en charge la valeur null similaire à JSON. Nous pouvons utiliser le mot-clé nul ou le symbole tilde (~) pour définir la valeur nulle en YAML. YAML a de jolies alternatives, non? Ouais, ils sont plutôt cool.

null_case_1: null
null_case_2: ~

Exécutez le script Python. Vous obtiendrez les deux valeurs comme Aucun comme Python utilise Aucun à la place du nul mot-clé.

Key: Value
null_case_1: None
null_case_2: None

Arrays

Nous pouvons spécifier les tableaux similaires à Python en YAML. Ou nous pouvons écrire tous les éléments du tableau dans des lignes séparées précédées trait d'union (-). Voyons un exemple pour chaque représentation.

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

Dans le code YAML ci-dessus, nous avons utilisé crochets similaire aux listes Python. Voyons une autre façon de représenter les tableaux en YAML (qui ressemble à des listes de démarques).

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

Si vous utilisez notre script Python pour interpréter les exemples ci-dessus. Vous obtiendrez la sortie comme suit.

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

On peut avoir des dictionnaires dans la liste non seulement des chaînes, des nombres, etc.,

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

Vous obtiendrez un tableau de dictionnaires si vous interprétez le code YAML ci-dessus avec notre 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'}}]

Dictionnaires

Nous avons déjà vu la syntaxe des dictionnaires dans les exemples ci-dessus. Pour récapituler rapidement les dictionnaires sont des paires clé-valeur. Nous pouvons avoir n'importe quel type de données valide comme valeur de la clé. YAML prend même en charge les dictionnaires imbriqués.

Voyons un exemple.

dictionary:
  i am key: i am value

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

Interprétez le code ci-dessus, vous verrez le même résultat comme suit.

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

Sais-tu que tu peux convertir une liste en dictionnaire en Python?

Ensemble

YAML prend en charge un autre type de données appelé set. L'ensemble contient des valeurs uniques similaires au type de données d'ensemble de Pythons. Les éléments de l'ensemble sont précédés du point d'interrogation (?) comme les éléments de liste précédés de tirets (-).

Nous devons mentionner que le type de données est défini en utilisant !!ensemble après le nom du jeu.

Regardez l'exemple suivant.

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

Comme l'ensemble ne contient que des valeurs uniques, vous n'obtiendrez pas 2 deux fois lorsque vous interprétez le code YAML ci-dessus avec notre script Python.

Voyons le résultat.

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

Nous pouvons également représenter l'ensemble similaire à la syntaxe Python comme suit.

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

Vous obtiendrez la sortie exacte comme dans l'exemple ci-dessus.

C'est tout pour les types de données dans YAML. Voyons quelques fonctionnalités supplémentaires de YAML.

Comments

YAML prend en charge les commentaires. C'est bien. Nous pouvons écrire des commentaires en YAML en commençant par un hachage (#) symbole.

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

Si vous interprétez le code YAML ci-dessus, vous obtiendrez une clé vide avec une valeur nulle.

Key: Value
yaml is great: None

YAML ne prend pas en charge les commentaires sur plusieurs lignes. Nous devons écrire plusieurs lignes en commençant par un hachage pour les commentaires sur plusieurs lignes similaires à Python.

Anchors

Ancres nous permettent de copier le contenu d'une clé où nous voulons dans l'ensemble du document. Ceci est très pratique si vous souhaitez dupliquer du contenu dans le document.

Pour utiliser des ancres, nous devons lui définir un nom comme nom de variable dans les langages de programmation. Et ensuite, nous pouvons l'utiliser partout dans le document où nous voulons.

Nous pouvons définir le nom de l'ancre en utilisant & et utilisez-le avec *. Voyons un exemple.

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

# dopying the data
duplicate_data: *duplicate_data

Dans l'exemple ci-dessus, nous avons utilisé un duplicate_data ancre pour copier la valeur de data clé. Les deux clés contiennent les mêmes valeurs si vous interprétez le YAML ci-dessus.

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

Conclusion

J'espère que vous avez une bonne compréhension de YAML. Maintenant, vous pouvez utiliser YAML dans votre prochain fichier de configuration de projet. Vous pouvez vous référer au YAML site Web officiel pour obtenir des informations plus avancées.

Bon codage 🙂