コンテンツにスキップ

YAML のパース

このガイドでは、pyrs-yaml で YAML をパースするすべての方法を説明します。

基本パース

YAML 文字列のパース

文字列をパース
import pyrs_yaml

doc = pyrs_yaml.parse("key: value")  # (1)!
print(doc.get("key"))  # value
  1. parse()YamlDocument を返します。コメント・アンカー・フォーマットを保持します。

オプション付きパース

オプション付きパース
# マージキーの解決を無効化(<<: *alias をそのまま保持)
doc = pyrs_yaml.parse(yaml_text, resolve_merges=False)

YAML ファイルのパース

ファイルをパース
doc = pyrs_yaml.parse_file("config.yaml")
print(doc.get("name"))

複数ドキュメントのパース

複数ドキュメントをパース
# --- 区切りの YAML
yaml_text = """
---
name: first
---
name: second
"""

docs = pyrs_yaml.parse_all_docs(yaml_text)
print(len(docs))  # 2
print(docs[0].get("name"))  # first
print(docs[1].get("name"))  # second

PyYAML 互換パース

PyYAML 互換の解析

safe_load は PyYAML と同じ API を提供するため、既存のコードベースからの移行が容易です。

PyYAML 互換パース
# ネイティブ Python 型を返す(dict, list, str, int など)
data = pyrs_yaml.safe_load("key: value")
print(data)  # {'key': 'value'}

# 複数ドキュメント
docs = pyrs_yaml.safe_loads("a: 1\n---\nb: 2")
print(len(docs))  # 2

受け付ける入力型

pyrs-yaml は 3 種類の入力をサポートします。

  • str — 標準 YAML 文字列
  • :material-binary: bytes — 有効な UTF-8 エンコードバイト列
  • str に BOM あり — 正しく処理される
str 入力
doc = pyrs_yaml.parse("key: value")
bytes 入力
doc = pyrs_yaml.parse(b"key: value")

エラーハンドリング

エラーハンドリング
try:
    doc = pyrs_yaml.parse("invalid: yaml: [")
except pyrs_yaml.YamlParseError as e:
    print(f"パースエラー: {e}")

サポートされるデータ型

pyrs-yaml はすべての YAML 1.2 スカラータイプを正しくパースします。

Python 型
文字列 hello str
整数 42, 0x1A, 0o77 int
浮動小数点 3.14, 1.23e-4 float
ブーリアン true, false bool
Null null, ~ None
無限大 .inf, -.inf float
NaN .nan float

関連項目