YAML のパース
このガイドでは、pyrs-yaml で YAML をパースするすべての方法を説明します。
基本パース¶
YAML 文字列のパース¶
文字列をパース
import pyrs_yaml
doc = pyrs_yaml.parse("key: value") # (1)!
print(doc.get("key")) # value
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 |