CSV行・列抽出|指定した行番号・列番号だけを抽出
1始まりで指定します。例:1,3,5-7
CSVと抽出する行番号を入力してください。
このツールでできること
CSVをレコードとセルへ解析し、1始まりで指定した行または列だけを抽出します。引用符内のカンマや改行にも対応し、番号を入力した順序ではなく元CSVの行順・列順を保った結果を作成します。
使い方
- CSVを入力欄へ貼り付けます。
- 「行を抽出」または「列を抽出」を選びます。
- 抽出する番号を
1,3,5-7のように1始まりで入力します。 - 「CSVから抽出」を押し、結果をコピーします。
入力、番号、抽出対象を変更すると、変更前の結果は消去されます。「クリア」を押すと入力と番号を消去し、抽出対象を「行を抽出」へ戻します。
入力例・出力例
次の5行のCSVで「行を抽出」を選び、1,3,5を指定します。
id,name,area
1,A,東京
2,B,大阪
3,C,福岡
4,D,札幌
元の1・3・5番目のレコードを、その順序で出力します。
id,name,area
2,B,大阪
4,D,札幌
次の可変列CSVで「列を抽出」を選び、3,1を指定します。
A,B,C
1,2
3,4,5
指定順へ並べ替えず、元の1列目、3列目の順で出力します。2行目にない3列目は空セルで補うため、その行の末尾はカンマになります。
A,C
1,
3,5
よくある利用場面
- 大きいCSVから確認対象の行番号だけを抜き出すとき
- 必要な列だけを残した簡易CSVを作るとき
- 引用符内改行を含むCSVをレコード単位で抽出するとき
処理仕様
番号の指定
行番号はCSVのレコード、列番号は各レコード内のフィールド位置を1から数えます。先頭レコードをヘッダーとして特別扱いしないため、見出し行を行抽出の結果へ含めるには1を指定します。引用符で囲まれたセル内の実改行は同じレコードの一部であり、次の行番号として数えません。
指定は半角数字の単独番号と範囲をカンマで区切る1,3,5-7形式です。番号やハイフンの前後には半角空白を入れられます。重複指定は1回にまとめ、3,1のように入力しても、行・列とも元CSV内の小さい番号から出力します。指定順への並べ替えは行いません。
番号なし、0以下、小数や符号付きの値、末尾を含む空要素、開始番号が終了番号より大きい範囲、安全な整数として扱えない値、CSVの行数または最大列数を超える指定はエラーです。範囲外の番号だけを無視して処理を続けることはありません。
行抽出と列抽出
行抽出は選択したレコードを元の順序で残し、各レコードの列数をそのまま保持します。列数が異なる行を長方形へそろえる処理は行いません。
列抽出は入力全体の最大列数を選択可能な上限とします。選択した列が短い行に存在しない場合は、その位置を空文字セルで補います。入力に明記された空セルと補った空セルは、出力では区別できません。
CSVの解析と出力
区切り文字は半角カンマです。LF・CRLF・CR、空セル、空レコード、引用符で囲んだカンマや実改行、""で表した引用符に対応します。引用符はセルの先頭でだけ開始でき、閉じ引用符の後にはカンマ、改行、または入力末尾だけを置けます。
先頭のBOMは1文字だけ除去します。BOMだけの入力は空入力エラーですが、引用符で表した空セルは有効な入力です。不正な引用符は物理行付近を示してエラーにし、途中までの結果は出力しません。
結果はCSVとして作り直します。カンマ、引用符、CR、LFを含むセルだけを二重引用符で囲み、内部の引用符を""へ変換します。レコード間はLFで結び、末尾に追加のレコード改行を付けません。入力のBOM、レコード改行の種類、不要な引用符の有無は保持しません。
値の前後空白、文字大小、Unicode、HTML風文字列、&などのHTMLエンティティを変更しません。バックスラッシュと英字のnからなる文字列\nも実改行へ変換しません。空セル1個だけを抽出した場合、結果欄は空に見えますが有効な結果としてコピーできます。
非常に大きな入力で利用できる量と処理速度は、端末とブラウザの性能に依存します。
入力データについて
入力したCSVは外部ライブラリを使わずブラウザ内で処理され、ToolRollのサーバーや外部サービスへ送信されません。Cookie、Web Storage、IndexedDB等へ入力、番号、結果を保存しません。「結果をコピー」を押したときだけ、表示中の結果をクリップボードへ書き込みます。