YAMLを読めるようになる勉強ノード
ゼロからYAMLを読めるレベルまでの基礎知識をまとめました。
私と同じの初心者に共有します。
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'}}
スカラー
input.yaml
# コメント
- hello # コメント
['hello']
input.yaml
# ブロックスタイルの書き方 (「-」+半角スペース)
- aaa
- bbb
- ccc
-
- ddd
- eee
# フロースタイルの書き方
[aaa, bbb, ccc, [ddd, eee]]
['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}}
{'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'}
Author And Source
この問題について(YAMLを読めるようになる勉強ノード), 我々は、より多くの情報をここで見つけました https://qiita.com/Qiu/items/895373eb229946ae51b5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .