4行目が3番目のレコードになる理由

RFC 4180は引用符で囲んだフィールド内の改行を説明するInformational文書です。firstとsecondは1つのセルの2行です。画面幅による折り返しは入力内の実際の改行とは異なります。

id,note
001,"first
second"
002,ok,extra

上の入力は実際の4行、ヘッダーを含む3レコードです。Moyoutilは最後のレコードで必要な列数2、実際の列数3のエラーを返しました。位置は4行目・3番目のレコードです。セル内の改行はレコード数を増やしません。

CSVの実際の4行と3レコードを色分けした図
独自制作の図です。左の数字は実際の行番号、右はヘッダーを含むレコード番号です。中央の2行は1レコードで、最後の行に列数エラーがあります。

RFC 4180, section 2

列数と元の値を合わせて確認

extraが誤って追加された場合だけ最後の行を002,okに直します。実データなら削除せず、ヘッダーと他のレコードの構造を決めてください。この仮定で修正するとデータ2行・2列に変換され、noteの実際の改行とidの文字列001が残ります。

[
  {"id":"001","note":"first\nsecond"},
  {"id":"002","note":"ok"}
]

ツールのエラー位置への移動ボタンで入力を確認し、再変換してください。閉じていない引用符のエラーは読み取りが崩れた開始引用符を指す場合があります。末尾の改行1回と空レコードの追加は異なります。原本を保管し、区切り文字も確認してください。

よくある質問

改行を全部削除すれば直りますか?

勧めません。改行がセル値の一部の場合があります。この例ではセル内の改行を残し、最後のレコードの列数を修正します。他のCSVプログラムでは診断位置や方言の扱いが異なることがあります。