CSV ファイルを開くか貼り付けると、各行が見出しをキーにした YAML のリストの項目 1 つになります。既定ではすべての値が文字列のままで、NO、yes、0150、2024-03-01、null のように YAML パーサーが別のものとして解釈してしまう値は引用符で囲まれるため、読み込み直しても書かれたとおりの値になります。ファイルはブラウザー内で変換され、アップロードされることはありません。
CSV を YAML に変換する手順
- ファイルを開く を選ぶか、
.csv、.tsv、.txtファイルをツールにドロップするか、貼り付け を選びます。キーがおかしい場合は、読み込み設定 で区切り文字と文字コードを確認してください。 - 値の型 と、空のセル の書き出し方を選びます。YAML タブには、ダウンロードされるテキストそのものが表示されます。
- インデント を選んでから、コピー または YAML をダウンロード を選びます。
結果は最上位がシーケンス(- key: value の項目)の形式で、テスト用のフィクスチャ、シード データ、静的サイトのデータ ファイルで使われる構造です。JSON が必要な場合は、同じ型のオプションを持つ CSV を JSON に変換 を使ってください。
各オプションの内容
| すべての値を文字列のまま扱う | 既定の設定です。すべての値が YAML の文字列になります。引用符は、引用符なしのスカラーでは別のものとして読み込まれてしまう場合にだけ付けます。 |
|---|---|
| 数値と true/false を判定する | 列が YAML の数値になるのは、空でないすべての値が、先頭のゼロがなく有効数字 15 桁以下の単純な数値である場合だけです。true/false(大文字・小文字を問わない)の列は真偽値になります。yes/no と日付は引用符付きの文字列のままです。数値は標準形で書き出されるため、1.50 は 1.5 になります。 |
| 空のセル | null(既定)では key: null、空の文字列 "" では key: "" と書き出し、キーを省く ではその行からキーを除きます。 |
| インデント | リストの各項目の下のキーを、スペース 2 個(既定)または スペース 4 個 で字下げします。 |
あいまいな値を引用符で囲む規則
出力は、YAML 1.2 のパーサーでも、より多くの単語を真偽値や数値として扱う PyYAML などの古い YAML 1.1 のパーサーでも、同じ値として読み込み直せるように書き出されます。
- 国コードや回答のコード:
NO、yes、off、y、onは引用符で囲まれるため、ノルウェーの国コードがfalseとして読み込まれることはありません。これはキーにも適用されます("on": x)。 - 先頭のゼロ:
0150や08001は引用符で囲まれます。引用符がないと、YAML 1.1 では 8 進数や 10 進数として読み込まれ、ゼロが消えてしまいます。郵便番号のような値も同様です。 - 文字列モードでの日付と数値:
2019-04-01や12は、タイムスタンプや整数として読み込まれないよう引用符で囲まれます。 - null に見える文字列:
nullや~を含むセルは引用符で囲まれるため、空のセルと混同されず、書いたとおりの文字列のままになります。 - 値の中の改行は
|-のリテラル ブロックになり、文字列の中の:や#は引用符で囲まれます。長い行が折り返されることはありません。 - 見出しは、空白やラテン文字以外の文字も含めて、書かれたとおりにキーとして使われます。空の見出しは
Column 3、重複した見出しはname (2)になります。
うまくいかない場合
- 「数値と true/false を判定する」でも数値の列が引用符付きのままになった。
1,5、12 kg、007など、単純な数値でない値が少なくとも 1 つあります。CSV ビューアー で見つけてください。 - yes/no の列が真偽値にならなかった。 変換されるのは
trueとfalseだけです。yes、no、onが真偽値を意味するのは YAML 1.1 だけだからです。真偽値が必要な場合は、先に CSV エディター などで CSV の値を置き換えてください。 - キーに é のようなおかしな文字が含まれる。 ファイルが UTF-8 ではありません。「読み込み設定」でファイルの文字コードを選んでください。
- すべての値が 1 つのキーの下に入ってしまう。 区切り文字の判定が誤っています。「読み込み設定」で指定してください。
制限とプライバシー
25 MB、10万行、200万セルまでのファイルは、先頭 200 行のリアルタイムのプレビュー付きで開きます。それより大きなファイルはストリーミング方式で変換します。ファイルを分割して 2 回読み込み(1 回目で列とその型を確認し、2 回目で書き出す)、ダウンロードにはファイル全体が含まれることが通知され、コピー は使えません。1 つの出力ファイルは 4 GB までです。
変換はこのタブ内のバックグラウンドのワーカーで実行されるため、ページの操作が止まることはなく、キャンセル で中止できます。CSV がサーバーに送信されることはありません。
例
国コード、先頭がゼロの郵便番号、yes/no のフラグ、日付、空のセルを含む顧客リストを、既定の設定(すべて文字列、空のセルは null)で変換した例です。数値と true/false を判定する を選ぶと、変わるのは orders だけで、12、3、7 になります。
country,code,postcode,vat_registered,since,orders Norway,NO,0150,yes,2019-04-01,12 Spain,ES,08001,no,2021-11-15,3 United States,US,02134,,,7
- country: Norway code: "NO" postcode: "0150" vat_registered: "yes" since: "2019-04-01" orders: "12" - country: Spain code: ES postcode: "08001" vat_registered: "no" since: "2021-11-15" orders: "3" - country: United States code: US postcode: "02134" vat_registered: null since: null orders: "7"
よくある質問
`NO` が引用符で囲まれているのはなぜですか?
YAML 1.1 では、引用符のない NO、no、off、n は false を意味するためです。引用符で囲むことで、ノルウェーの国コードや no と書かれた回答が、どのパーサーでも文字列のまま保たれます。
リストではなく、ID をキーにした 1 つのマッピングにできますか?
できません。CSV の各行は、ファイルの順序でリストの項目 1 つとして書き出されます。キー付きの出力は、ここでは利用できません。
出力は YAML 1.2 として正しいですか?
はい。YAML 1.1 のために追加した引用符も YAML 1.2 として正しく、もともと文字列だった値を明示的に示すだけです。