1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

YAMLを読めるようになる勉強ノード

Posted at

ゼロからYAMLを読めるレベルまでの基礎知識をまとめました。
私と同じの初心者に共有します。

公式: https://yaml.org/

YAML

YAMLとは、インデントを使って構造化されたデータを表現するためのフォーマットです。

配列、ハッシュ、スカラーの書き方記述タイプがわかれば、YAMLファイルを読めるようになります。

YAMLの記述タイプ:

YAMLの書き方は二つあります。

  • ブロックスタイル : データを複数行にわたって記述する
  • フロースタイル :データを一行にまとめて記述する
    (「{}」 「[]」を使って構造を表す。「,」+半角スペースでデータを繋がる)

Pythonで実行で例を実行した。(飛ばす可)

環境

 Python: 3.7.5
 PyYamlモジュールを導入

PyYaml は pip コマンドでインストール:
$ pip install pyyaml
ファイル構造
-- yaml_dir
  - input.yaml
  - sample.py 
sample.py
import yaml

f = open("input.yaml", "r+")
data = yaml.load(f)
print(data)

YAMLの書き方

コメント

input.yaml
# コメント
- hello # コメント
Pythonで実行結果:
['hello']

配列

input.yaml
#  ブロックスタイルの書き方 (「-」+半角スペース)
- aaa
- bbb
- ccc
-
  - ddd
  - eee
 
# フロースタイルの書き方
[aaa, bbb, ccc, [ddd, eee]]
Pythonで実行結果:
['aaa', 'bbb', 'ccc', ['ddd', 'eee']]

ハッシュ

input.yaml
#  ブロックスタイルの書き方 (「:」+半角スペース)
A: aaa
B: bbb
C: ccc
D: 
  E: eee
  F: fff

# フロースタイルの書き方
{A: aaa, B: bbb, C: ccc, D: {E: eee, F: fff}}
Pythonで実行結果:
{'A': 'aaa', 'B': 'bbb', 'C': 'ccc', 'D': {'E': 'eee', 'F': 'fff'}}

スカラー

YAML では、以下のデータ型を自動的に判別します。

  • 整数
  • 浮動小数点
  • 真偽値 (true, yes, false, no)
  • Null値 (null, ~)
  • 日付 (yyyy-mm-dd)
  • タイムスタンプ

これら以外は文字列として認識されます。また引用符「’」や二重引用符「”」で囲むと、強制的に文字列として認識されます。

input.yaml
decimal1:  123                           # 整数 (10 進数)
decimal2:  1,234,567,890                 # 整数 (10 進数)
octal:     0644                          # 整数 (8 進数)
hexa:      0xFF                          # 整数 (16 進数)
float1:    0.05                          # 浮動小数点
bool1:     true                          # 真
bool2:     yes                           # 真
bool3:     on                            # 真
bool4:     false                         # 偽
bool5:     no                            # 偽
bool6:     off                           # 偽
null1:     ~                             # Null 値
null2:     null                          # Null 値
date:      2021-01-01                    # 日付
stamp:     2021-01-01 00:00:00 +09:00    # タイムスタンプ
str1:      'true'                        # 文字列
str2:      "2021"                        # 文字列
Pythonで実行結果:
{'decimal1': 123, 'decimal2': '1,234,567,890', 'octal': 420, 'hexa': 255, 'float1': 0.05, 'bool1': True, 'bool2': True, 'bool3': True, 'bool4': False, 'bool5': False, 'bool6': False, 'null1': None, 'null2': None, 'date': datetime.date(2021, 1, 1), 'stamp': datetime.datetime(2021, 1, 1, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=32400))), 'str1': 'true', 'str2': '2021'}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?