Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Entwicklung Zuletzt aktualisiert: September 14, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

YAML Ain't Markup Language (YAML) ist eine Sprache zur Serialisierung von Daten für die meisten Programmiersprachen. Lassen Sie uns das im Detail verstehen.

YAML eine strenge Obermenge von JSONso dass alles, was in JSON kann geparst werden zu YAML. Es wird hauptsächlich für Konfigurationsdateien in Projekten verwendet und ist super einfach zu verstehen und den Code zu lesen.

Die Dateierweiterung für YAML-Dateien lautet .yaml oder .yml

In diesem Tutorium werden wir verschiedene Datentypen kennenlernen, die in YAML und mit YAML in Python arbeiten. Am Ende dieses Tutorials werden Sie in der Lage sein, YAML und seine Syntax zu verstehen.

Ich gehe davon aus, dass Sie mit Python vertraut sind, falls nicht, lesen Sie bitte Python-Lernressourcen.

YAML folgt einer ähnlichen Einrückungssyntax wie Python. Allerdings erlaubt es nicht Registerkarte (merken Sie sich diese beim Schreiben von YAML-Dateien) für die Einrückung.

Einrichtung

  • Installieren Sie ein Python-Modul namens pyyaml zur Arbeit mit YAML Dateien.
pip install pyyaml
  • Kopieren Sie den folgenden Code, fügen Sie ihn in eine Datei ein und speichern Sie ihn als 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}")
  • Wir werden das obige Skript verwenden, um den YAML-Code in Python zu konvertieren und verschiedene Datentypen zu überprüfen.
  • Erstellen Sie eine Datei namens learn_yaml.yaml und üben Sie darin verschiedene Beispiele, die wir in diesem Tutorium besprechen werden.

Kommen wir nun zu den Datentypen von YAML.

Datentyp in YAML

Alles im YAML ist eine Schlüssel-Wert Paar.

In verschiedenen Programmiersprachen gibt es unterschiedliche Bezeichnungen für Schlüssel-Wert-Paare, wie z.B. Dictionaries, Hashes, Objects, usw. Diese sind Bausteine von YAML.

Die Schlüssel können Strings (in Anführungszeichen oder normal), Floats oder Integers sein (die Unterstützung kann sich in einem zukünftigen Update ändern). Die Werte können von jedem Datentyp sein, den YAML unterstützt.

Schauen wir uns die verschiedenen Datentypen in YAML an.

Zahlen

YAML unterstützt Ganzzahlen, Gleitkommazahlen und exponentielle Gleitkommazahlen.

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

Wenn Sie den obigen Code mit dem Python-Skript auswerten, erhalten Sie das folgende Ergebnis.

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

Wir können die Werte in verschiedenen Zahlensystemen darstellen wie dezimal, oktal, und hexadezimal.

  • Der führende null(0) steht für eine oktale Zahl.
  • Die Vorsilbe 0x steht für seinen hexadezimalen Wert.

Siehe das folgende Beispiel.

integer: 123
octal: 0123
hexa: 0x123

Wir können die umgewandelten Dezimalwerte von Oktal- und Hexadezimalwerten sehen, indem wir unser Python-Skript ausführen. Sie sollten die genaue Ausgabe wie folgt sehen.

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

Eine weitere spannende Eigenschaft von YAML ist die Möglichkeit, die NAN(Not A Number) und Unendlichkeit.

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

Wenn Sie das Python-Skript ausführen, sehen Sie die umgewandelten Werte von NAN, und inf zu Python.

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

Das war's mit den numerischen Typen in YAML.

Streicher

Strings in YAML können wie folgt dargestellt werden mit oder ohne Anführungszeichen. Beide sind ähnlich. Im Gegensatz zu JSON gibt es keine strikte Regel, jede Zeichenkette in Anführungszeichen zu setzen. Aber, wenn wir die Escape-Sequenzenverwenden, dann müssen wir Anführungszeichen.

Sehen wir uns einige Beispiele für Zeichenketten an.

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

Das Zeilenumbruchzeichen im Abschnitt Schlüssel-Wert-Paar funktioniert wie erwartet. Wie bereits erwähnt, müssen wir doppelte Anführungszeichen verwenden, um mit Escape-Sequenzen zu arbeiten.

Wir haben doppelte Anführungszeichen im nächsten Schlüssel-Wert-Paar verwendet und es funktioniert wie erwartet. Interpretieren Sie den obigen YAML-Code mit unserem Python-Skript. Sie erhalten dann das folgende Ergebnis.

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

In YAML gibt es zwei Sonderzeichen, mit denen man mehrere Sätze als Wert zu einem Schlüssel schreiben kann. Nehmen wir an, wir müssen einen langen Satz in mehrere Zeilen aufteilen. In einem solchen Szenario können wir mit einem falten (größer als >) oder Block (Rohr |) Zeichen, um mehrere Zeilen zu schreiben.

Was ist der Unterschied zwischen falten und Block Figuren? Ich komme darauf zu sprechen.

Falten Zeichen werden die Zeilenumbrüche nicht interpretiert, während Block Charakter tut.

Schauen wir uns die Beispiele an.

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.

Führen Sie das Python-Skript aus, dann sehen Sie den Unterschied zwischen dem falten und Block Zeichen. Und vergessen Sie nicht, Einrückungen zu verwenden.

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.

Boolesche Werte

In YAML können wir den booleschen Wert darstellen Wahr und Falsch auf drei verschiedene Arten. Schau sie dir an.

  • Die Werte Richtig, ein, und Ja werden betrachtet als Wahr in YAML.
  • Die Werte FalschAus, und Nein werden betrachtet als Falsch in 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

Wenn Sie den obigen YAML-Code interpretieren, dann erhalten Sie die ersten 3 Schlüsselwerte als Wahr und die nächsten 3 Schlüsselwerte als Falsch.

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 unterstützt ähnlich wie JSON den Null-Wert. Wir können mit dem Schlüsselwort null oder das Symbol Tilde(~) um den Nullwert in YAML zu definieren. YAML hat doch schöne Alternativen, oder? Ja, die sind ganz schön cool.

null_case_1: null
null_case_2: ~

Führen Sie das Python-Skript aus. Sie erhalten beide Werte als Keine wie Python verwendet Keine anstelle der null Stichwort.

Key: Value
null_case_1: None
null_case_2: None

Arrays

Wir können die Arrays ähnlich wie in Python in YAML angeben. Oder wir können alle Array-Elemente in separate Zeilen schreiben, die vor Bindestrich (-). Sehen wir uns ein Beispiel für jede Darstellung an.

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

In dem obigen YAML-Code haben wir Platz Klammern ähnlich wie bei Python-Listen. Sehen wir uns eine weitere Möglichkeit an, Arrays in YAML darzustellen (sieht aus wie Markdown-Listen).

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

Wenn Sie unser Python-Skript verwenden, um die obigen Beispiele zu interpretieren. Sie erhalten dann die folgende Ausgabe.

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

Wir können Wörterbücher in der Liste haben, nicht nur Zeichenketten, Zahlen, usw.,

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

Sie erhalten ein Array von Dictionaries, wenn Sie den obigen YAML-Code mit unserem Python-Skript interpretieren.

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

Wörterbücher

Wir haben die Syntax von Wörterbüchern bereits in den obigen Beispielen gesehen. Um es kurz zusammenzufassen: Dictionaries sind Schlüssel-Wert-Paare. Als Wert für den Schlüssel kann jeder gültige Datentyp verwendet werden. YAML unterstützt sogar die Verschachtelung von Dictionaries.

Sehen wir uns ein Beispiel an.

dictionary:
  i am key: i am value

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

Wenn Sie den obigen Code interpretieren, erhalten Sie das gleiche Ergebnis wie folgt.

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

Wussten Sie, dass Sie eine Liste in ein Wörterbuch in Python umwandeln?

Satz

YAML unterstützt einen weiteren Datentyp namens Set. Set enthält eindeutige Werte, ähnlich wie der Datentyp set von Python. Set-Elemente werden mit dem vorangestellten Fragezeichen (?) wie Listeneinträge mit vorangestelltem Bindestriche (-).

Wir müssen erwähnen, dass der Datentyp mit !!.setzen nach dem Namen des Sets.

Sehen Sie sich das folgende Beispiel an.

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

Da die Menge nur eindeutige Werte enthält, erhalten Sie keine 2 zwei Mal, wenn Sie den obigen YAML-Code mit unserem Python-Skript interpretieren.

Schauen wir uns das Ergebnis an.

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

Wir können die Menge auch ähnlich der Python-Syntax wie folgt darstellen.

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

Sie erhalten dann die gleiche Ausgabe wie im obigen Beispiel.

Das war's mit den Datentypen in YAML. Schauen wir uns nun einige zusätzliche Funktionen in YAML an.

Kommentare

YAML unterstützt Kommentare. Das ist großartig. Wir können in YAML Kommentare schreiben, die mit einem Raute (#) Symbol.

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

Wenn Sie den obigen YAML-Code interpretieren, dann erhalten Sie einen leeren Schlüssel mit einem Nullwert.

Key: Value
yaml is great: None

YAML unterstützt keine mehrzeiligen Kommentare. Für mehrzeilige Kommentare müssen wir, ähnlich wie in Python, mehrere Zeilen schreiben, die mit einer Raute beginnen.

Verankerungen

Verankerungen ermöglichen es uns, den Inhalt einer Taste an eine beliebige Stelle im gesamten Dokument zu kopieren. Dies ist sehr praktisch, wenn Sie einige Inhalte im Dokument duplizieren möchten.

Um Anker zu verwenden, müssen wir einen Namen für sie definieren, wie einen Variablennamen in Programmiersprachen. Dann können wir sie überall im Dokument verwenden, wo wir wollen.

Wir können den Ankernamen mit & und verwenden Sie es mit *. Sehen wir uns ein Beispiel an.

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

# dopying the data
duplicate_data: *duplicate_data

In dem obigen Beispiel haben wir eine duplizieren_data Anker, um den Wert des Daten Schlüssel. Beide Schlüssel enthalten die gleichen Werte, wenn Sie die obige YAML interpretieren.

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

Schlussfolgerung

Ich hoffe, Sie haben ein gutes Verständnis von YAML bekommen. Nun können Sie YAML in Ihrer nächsten Projektkonfigurationsdatei verwenden. Sie können sich auf die YAML offizielle Website, um weitere Informationen zu erhalten.

Fröhliches Kodieren 🙂

  • Hafeezul Kareem Shaik
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre zum Thema Entwicklung
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder