100% ローカル — データがブラウザの外に出ることはありません

CSVをYAMLに変換|一目で読める並びの設定データに整える

CSVの表を、YAMLのマッピングの並びに変換します。一行が一つの塊になるので、設定ファイルやテスト用のデータとして、そのまま置いて上から目で追えるようになります。

高速 プライベート Cookieゼロ
インデント
区切り文字

CSV 入力

YAML 出力

このツールの動作

CSV の各行が、先頭行をキーとする YAML のマッピングになり、それらがリストを構成します。値の型判定は JSON のときと同じで、30 は数値、true は真偽値、先頭のゼロがある値は文字列のままです。

インデント幅はエディタ上部で選べます。

YAMLが引用符で囲む値と、囲まない値

ここでの引用符は飾りではありません。誰かがファイルを読み戻したときに値の意味が変わってしまうのを防ぐためのものです。

  • 3.0 は引用符で囲みます。裸のままだと数値の 3 として戻るからです。
  • null というテキストも引用符で囲みます。その単語のまま残し、値の不在にならないようにするためです。
  • 空のフィールドも同じ理由で "" として引用符で囲みます。

一方、裸のまま出力される値が2つあります。yes と no です。このツールが出力する YAML 1.2 では通常の文字列ですが、YAML 1.1 では真偽値であり、PyYAML は今もそのように読みます。出力を Python のツールに渡すなら、CSV の段階でその列を引用符で囲んでおいてください。

複数行のセル

CSV のフィールドは改行を含むことができ、YAML はそれを失わずに保持できます。そうしたセルは |- で始まるブロックスカラーとして出力され、内容はキーの下にインデントされます。平坦化もエスケープも行いません。

プライバシー

すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

3.0 が引用符で囲まれ、30 が囲まれないのはなぜですか。
`3.0` を裸で書くと数値の 3 として戻り、末尾のゼロが失われるからです。引用符は、CSV にあったとおりの文字列として保ちます。`30` にはその曖昧さがないため、そのまま数値になります。
yes の列が Python で true になりました。なぜですか。
お使いのパーサが YAML 1.1 に従っているためです。1.1 では裸の `yes` と `no` は真偽値です。このツールが出力するのは YAML 1.2 で、そこでは通常の文字列です。2つの仕様が食い違っており、その食い違いは読み取り側でしか現れません。PyYAML で読むなら、CSV の段階でその列を引用符で囲んでください。
改行を含むセルはどうなりますか。
`|-` で始まり、キーの下にインデントされたブロックスカラーになります。改行はそのまま保持されます。1行の引用符付き形式では保証できない点です。

関連ツール