CSVの列ずれを直す:カンマ・引用符・セル内改行を架空データで確認

CSVを読み込んだら、商品名が隣の列へずれたり、1件のメモが複数行になったりすることがあります。最初に確認したいのは、文字コードよりも「区切り文字」と「引用符」です。ここでは架空データを使い、壊れる例と直す例を比べます。

カンマを含む商品名は引用符で囲む

見出しが3列なのに、次のデータ行には区切りとして解釈されるカンマが3個あります。

商品コード,商品名,数量
0012,ノート,青,2

商品名を「ノート,青」という1つの値として扱いたい場合は、次のようにダブルクォートで囲みます。

商品コード,商品名,数量
0012,"ノート,青",2

当工房で作成したCSV点検処理では、前者は4列、後者は3列として読み取れることを確認しました。見出しと列数が合わない場合、余った値を勝手に捨てずに確認対象とします。

セルの中の引用符は2つ重ねる

商品名に引用符そのものを入れるときは、外側を引用符で囲み、内部の引用符を重ねます。

商品コード,商品名,数量
0012,"ノート""青""",2

この例の2列目は、ノート"青"という文字列です。行を単純にカンマで分割するだけでは、引用された値を正しく扱えません。

セル内改行と、データ行の終わりを分ける

メモ欄に改行を含める場合も引用符で囲みます。引用符の内側の改行までデータ件数に数えると、実際より多く見えることがあります。当工房の処理では引用符内の改行を保持し、次のレコードの元行番号も確認しています。

修正する前のチェックリスト

  1. 元ファイルを別に保管する。
  2. 取り込み先がカンマ・タブ・セミコロンのどれを求めるか確認する。
  3. 見出しと各行の列数を比べる。
  4. 引用符の閉じ忘れがないか調べる。
  5. 修正後のファイルを再読込して、件数と文字を確認する。

前後の空白は値の一部である場合があります。列ずれの対策として、空白や引用符を一律に削除する方法は避けましょう。

検証範囲と参考資料

この記事は架空データと独自のCSV処理による検証に基づきます。すべての販売管理サービスへの取込を確認したものではありません。各サービスが指定する書式がある場合は、その仕様を優先してください。

参考:RFC 4180・CSV形式の説明。カンマ・改行・引用符の扱いを確認するために参照しました。


こつこつ実務工房は、AIを制作補助に使用し、例と計算を検証して公開しています。実際に確認した範囲と未検証の範囲を区別します。この記事にはアフィリエイトリンクはありません。

 

コメント

このブログの人気の投稿

CSVの差分比較で「全部変わった」と出たら:行順・比較キー・重複を確認する

CSVの商品コード「00123」を守る:先頭ゼロが消えた場所を切り分ける

CSVを提出する前に残す確認メモ:件数・変更点・未確認を短く記録する