unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Yaml

YAML #

Pengertian #

YAML (YAML Ain’t Markup Language) adalah format serialisasi data yang dirancang untuk mudah dibaca oleh manusia. YAML sering digunakan untuk konfigurasi dan penyimpanan data karena strukturnya yang mirip dengan JSON tetapi lebih mudah dibaca. Python mendukung YAML melalui pustaka PyYAML.

Instalasi PyYAML #

Anda perlu menginstal pustaka PyYAML terlebih dahulu:

pip install pyyaml

Operasi Dasar #

Berikut adalah beberapa operasi dasar yang dapat dilakukan dengan PyYAML di Python:

Memuat YAML #

  • Dari String YAML: Menggunakan yaml.safe_load()

    import yaml
    
    yaml_string = """
    name: Alice
    age: 25
    city: New York
    """
    data = yaml.safe_load(yaml_string)
    
    print(data)
    # Output: {'name': 'Alice', 'age': 25, 'city': 'New York'}
    
  • Dari File YAML: Menggunakan yaml.safe_load()

    import yaml
    
    with open('data.yaml', 'r') as file:
        data = yaml.safe_load(file)
    
    print(data)
    # Output tergantung pada isi dari data.yaml
    

Menghasilkan YAML #

  • Ke String YAML: Menggunakan yaml.dump()

    import yaml
    
    data = {'name': 'Alice', 'age': 25, 'city': 'New York'}
    yaml_string = yaml.dump(data)
    
    print(yaml_string)
    # Output:
    # age: 25
    # city: New York
    # name: Alice
    
  • Ke File YAML: Menggunakan yaml.dump()

    import yaml
    
    data = {'name': 'Alice', 'age': 25, 'city': 'New York'}
    
    with open('data.yaml', 'w') as file:
        yaml.dump(data, file)
    

Fitur Lanjutan #

yaml.FullLoader #

yaml.safe_load() hanya memuat subset aman dari YAML. Untuk memuat seluruh dokumen YAML, Anda bisa menggunakan yaml.load() dengan FullLoader.

import yaml

yaml_string = """
name: Alice
age: 25
city: New York
"""
data = yaml.load(yaml_string, Loader=yaml.FullLoader)

print(data)
# Output: {'name': 'Alice', 'age': 25, 'city': 'New York'}

Tipe Data Kustom #

Anda bisa mendefinisikan handler khusus untuk tipe data kustom dalam YAML.

import yaml

class Person:
    def __init__(self, name, age, city):
        self.name = name
        self.age = age
        self.city = city

def person_representer(dumper, data):
    return dumper.represent_dict({
        'name': data.name,
        'age': data.age,
        'city': data.city
    })

def person_constructor(loader, node):
    value = loader.construct_mapping(node)
    return Person(**value)

yaml.add_representer(Person, person_representer)
yaml.add_constructor('!Person', person_constructor)

# Menulis YAML dengan tipe data kustom
person = Person('Alice', 25, 'New York')
yaml_string = yaml.dump(person)
print(yaml_string)
# Output:
# age: 25
# city: New York
# name: Alice

# Membaca YAML dengan tipe data kustom
yaml_string = """
!Person
name: Alice
age: 25
city: New York
"""
person = yaml.load(yaml_string, Loader=yaml.FullLoader)
print(person)
# Output: <__main__.Person object at 0x7f9f84c0c190>
print(person.name, person.age, person.city)
# Output: Alice 25 New York

Kesimpulan #

PyYAML memungkinkan Anda untuk memuat dan menulis data YAML dengan mudah di Python. Operasi dasar seperti memuat dan menghasilkan YAML dari/ke string atau file dapat dilakukan dengan yaml.safe_load() dan yaml.dump(). Untuk penggunaan yang lebih kompleks, seperti menangani tipe data kustom, Anda dapat mendefinisikan representer dan constructor khusus. PyYAML adalah alat yang kuat dan fleksibel untuk bekerja dengan YAML dalam aplikasi Python.

« JSON
MySQL »