CSV 行を引用符に対応して一項目ずつ改行に分割
カンマを含む値を誤って分割することなく、横並びの CSV レコードを見やすい縦の一覧へ変換できます。このパーサーは、引用符で囲まれたフィールド、二重引用符によるエスケープ、空の列、任意の末尾改行に対応します。表計算ソフト、エクスポート、ログ、コマンド出力からコピーした 1 行を、文書、フォーム、スクリプト、比較作業用の一覧に直す場合に便利です。ネットワーク参照や形式の推測を行わず、ブラウザーと API の双方で同じ決定的な変換を実行します。
無料で実行
完全な CSV レコードを 1 件だけ貼り付けます
テキスト欄には、カンマで区切られたレコードを正確に 1 件入力してください。<code>赤,緑,青</code> のような単純な入力は、順序を保ったまま 3 行になります。空の列は削除されません。<code>赤,,青,</code> は、空の 2 番目と末尾を含む 4 個の値になります。列位置に意味があるデータでは、空欄を捨てると後続の値がすべてずれるため、この動作が重要です。ファイルや端末からコピーしやすいよう、末尾には LF、CRLF、CR のいずれか 1 個だけを付けられます。引用符付きフィールドの外側に 2 件目のレコード区切りがある場合は拒否されます。この機能は CSV 文書全体ではなく、1 行だけを対象としているためです。空白の除去や、数値、日付、真偽値、null に似た語の型変換も行いません。CSV の引用符構文を復号した後も、各フィールドの文字は入力どおりに保たれます。そのため、自動整形によって意味が変わり得る識別子、ラベル、住所、セル、機械生成値も予測可能に処理できます。
引用符付きフィールドを CSV 規則どおりに解析します
単純にすべてのカンマで文字列を分ける方法は、住所、商品説明、文章にカンマが入った時点で正しく動きません。この機能は状態を管理する CSV パーサーを使用します。フィールドが二重引用符で始まると、対応する閉じ引用符までのカンマは値の一部として扱われます。引用符付きフィールド内で二重引用符を 2 個続けると、一般的な CSV のエスケープ規則に従って、文字としての二重引用符 1 個に戻ります。引用符内には改行も含められ、その値の一部として保持されます。閉じ引用符の後に置けるのはカンマかレコード終端だけです。想定外の文字があれば、もっともらしい誤った一覧を返さず、明確な入力エラーを返します。同じ理由で、引用符なしフィールドの途中に現れる引用符も拒否します。厳格な検査によって不正なエクスポートを早期に発見し、意味が密かに変わることを防ぎます。パーサーは上限付き入力を 1 回だけ走査し、外部サービスを使わず、同じテキストには常に同じ結果を返します。
行単位の入力先へ縦形式の結果を利用できます
応答には、すぐコピーできる改行結合済みの結果、構造化処理向けの lines 配列、確認用のフィールド数が含まれます。結合済みテキストは、複数行フォーム、テキストエディター、許可リスト、設定ファイル、課題票、表計算ソフトの 1 列範囲へ貼り付ける際に便利です。コードから扱う場合は、空フィールドや値自体に改行を含む場合でも CSV フィールドの境界を保てるため、配列のほうが安全です。自動化する前に field_count と受け取り側が想定する列数を比較してください。不一致があれば、入力元のカンマ不足、余分な末尾列、不正な引用符を見つけられることがあります。ヘッダーと複数レコードがある場合、区切り文字の自動判定が必要な場合、スキーマ検証を行う場合は、CSV 全体用のパーサーをご利用ください。この機能は、入力がカンマ区切りの単一レコードだと分かっており、横並びのフィールドを縦の値へ変えるだけの場合に適しています。API リクエストは $0.002、ブラウザー版は同じ決定的な解析を端末内で実行します。
活用例
表計算のセルを一覧へ変換
エクスポートした 1 行を貼り付け、引用符内のカンマを壊さずに各列を 1 行ずつコピーできます。
複数行フォーム用の入力を準備
識別子やラベルの CSV レコードを、一括フォームで使われる行単位の形式へ変換します。
問題のあるレコードを調査
各フィールドを個別に表示し、空列、エスケープ済み引用符、実際の値の個数を確認できます。
よくある質問
値の中にあるカンマにも対応しますか?
はい。正しく引用符で囲まれたフィールド内のカンマは値に残り、新しい行を作りません。
引用符はどのようにエスケープしますか?
引用符付きフィールド内で二重引用符を 2 個続けると、文字としての二重引用符 1 個になります。
空の CSV フィールドは保持されますか?
はい。列位置がずれないよう、先頭、途中、末尾の空フィールドをすべて保持します。
CSV ファイル全体を送信できますか?
いいえ。レコードを正確に 1 件だけ送信してください。ヘッダーや複数行には CSV 全体用の変換機能をご利用ください。
空白の削除やデータ型の変換を行いますか?
いいえ。引用符で囲まれていない空白も保持され、解析後の各フィールドはテキストのままです。
料金はいくらですか?
ブラウザー版は端末内で無料実行できます。API リクエストは $0.002 です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/str/csv-row-to-lines \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"alpha,\"New York, NY\",\"She said \"\"hello\"\"\",omega"}'const res = await fetch("https://api.kit.forhosting.com/str/csv-row-to-lines", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "alpha,\"New York, NY\",\"She said \"\"hello\"\"\",omega"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/csv-row-to-lines",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "alpha,\"New York, NY\",\"She said \"\"hello\"\"\",omega"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/csv-row-to-lines", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"alpha,\\"New York, NY\\",\\"She said \\"\\"hello\\"\\"\\",omega"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"alpha,\"New York, NY\",\"She said \"\"hello\"\"\",omega"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/csv-row-to-lines", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "alpha,\"New York, NY\",\"She said \"\"hello\"\"\",omega"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.csv_row_to_lines",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_chars | 100000 |
max_fields | 10000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |