【小ネタ】YAMLファイルをMarkdownへ変換を簡単にやってみた
こんにちはCX事業本部Delivery部のさかじです。 YAMLからDocumentを作る作業をやっています。何も考えず手動で変換しよう作業していたのですが、間違いも発生しますし、量が多いのでツールを作ることにしました。
環境
- Windows 11
- WSL2 Ubuntu22.04.2 LTS
前提条件
$ python3 --version Python 3.10.12
- PyYAMLのインストール
$ pip install PyYAML
- tabulateのインストール
$ pip install tabulate
サンプルYAMLファイルを作成
car.yml
cars: - make: Toyota model: Corolla year: 2020 color: red engine: type: petrol displacement: 1.8 - make: Honda model: Accord year: 2018 color: white engine: type: diesel displacement: 2.2 - make: Subaru model: Impreza year: 2021 color: blue engine: type: petrol displacement: 2.0
ちなみにこちらのサンプルデータはChatGPTに作ってもらいました。
YAML読み込み
$ python3 >>> import yaml >>> with open('./car.yml') as stream: >>> data = yaml.load(stream, Loader=yaml.SafeLoader)
※ PyYAML5.1以降はyaml.load(input)
と呼び出すことが非推奨になりました。参考
data
をprint()
すると以下のように見えました。
>>> print(data) {'cars': [{'make': 'Toyota', 'model': 'Corolla', 'year': 2020, 'color': 'red', 'engine': {'type': 'petrol', 'displacement': 1.8}}, {'make': 'Honda', 'model': 'Accord', 'year': 2018, 'color': 'white', 'engine': {'type': 'diesel', 'displacement': 2.2}}, {'make': 'Subaru', 'model': 'Impreza', 'year': 2021, 'color': 'blue', 'engine': {'type': 'petrol', 'displacement': 2.0}}]}
Markdown書き出し
car.yml
は読み込んだ前提で進めます
簡単にkeyで表を作ってみます。
>>> from tabulate import tabulate >>> cars = data['cars'] >>> print(tabulate(cars, headers='keys')) cars ------------------------------------------------------------------------------------------------------------------------ {'make': 'Toyota', 'model': 'Corolla', 'year': 2020, 'color': 'red', 'engine': {'type': 'petrol', 'displacement': 1.8}} {'make': 'Honda', 'model': 'Accord', 'year': 2018, 'color': 'white', 'engine': {'type': 'diesel', 'displacement': 2.2}} {'make': 'Subaru', 'model': 'Impreza', 'year': 2021, 'color': 'blue', 'engine': {'type': 'petrol', 'displacement': 2.0}}
今回はGithubなどで使われるMarkdownで作りたいと思います。
>>> print(tabulate(cars, headers='keys', tablefmt='github')) | make | model | year | color | engine | |--------|---------|--------|---------|-----------------------------------------| | Toyota | Corolla | 2020 | red | {'type': 'petrol', 'displacement': 1.8} | | Honda | Accord | 2018 | white | {'type': 'diesel', 'displacement': 2.2} | | Subaru | Impreza | 2021 | blue | {'type': 'petrol', 'displacement': 2.0} |
非常に簡単に出力できました。
参考サイト
- PyYAML
- 【PyYAML VS ruamel.yaml】PythonからYAMLファイルを触ってみた
- [Python]tabulateを使って様々な形式の表を作る
- PyYAMLがyaml.loadでYAMLLoadWarningを出してくるようになった件
- PyYAML yaml.load(input) Deprecation
最後に
YAMLから自由なフォーマットのMarkdownを作ることが容易にでき、ドキュメント化が自動化できます。
業務で使用するデータで機密のデータはオンラインツールで変換できませんので簡単に変換できるライブラリは非常に助かります。