CSVの列ずれを直す:カンマ・引用符・セル内改行を架空データで確認
CSVを読み込んだら、商品名が隣の列へずれたり、1件のメモが複数行になったりすることがあります。最初に確認したいのは、文字コードよりも「区切り文字」と「引用符」です。ここでは架空データを使い、壊れる例と直す例を比べます。
カンマを含む商品名は引用符で囲む
見出しが3列なのに、次のデータ行には区切りとして解釈されるカンマが3個あります。
商品コード,商品名,数量 0012,ノート,青,2
商品名を「ノート,青」という1つの値として扱いたい場合は、次のようにダブルクォートで囲みます。
商品コード,商品名,数量 0012,"ノート,青",2
当工房で作成したCSV点検処理では、前者は4列、後者は3列として読み取れることを確認しました。見出しと列数が合わない場合、余った値を勝手に捨てずに確認対象とします。
セルの中の引用符は2つ重ねる
商品名に引用符そのものを入れるときは、外側を引用符で囲み、内部の引用符を重ねます。
商品コード,商品名,数量 0012,"ノート""青""",2
この例の2列目は、ノート"青"という文字列です。行を単純にカンマで分割するだけでは、引用された値を正しく扱えません。
セル内改行と、データ行の終わりを分ける
メモ欄に改行を含める場合も引用符で囲みます。引用符の内側の改行までデータ件数に数えると、実際より多く見えることがあります。当工房の処理では引用符内の改行を保持し、次のレコードの元行番号も確認しています。
修正する前のチェックリスト
- 元ファイルを別に保管する。
- 取り込み先がカンマ・タブ・セミコロンのどれを求めるか確認する。
- 見出しと各行の列数を比べる。
- 引用符の閉じ忘れがないか調べる。
- 修正後のファイルを再読込して、件数と文字を確認する。
前後の空白は値の一部である場合があります。列ずれの対策として、空白や引用符を一律に削除する方法は避けましょう。
検証範囲と参考資料
この記事は架空データと独自のCSV処理による検証に基づきます。すべての販売管理サービスへの取込を確認したものではありません。各サービスが指定する書式がある場合は、その仕様を優先してください。
参考:RFC 4180・CSV形式の説明。カンマ・改行・引用符の扱いを確認するために参照しました。
こつこつ実務工房は、AIを制作補助に使用し、例と計算を検証して公開しています。実際に確認した範囲と未検証の範囲を区別します。この記事にはアフィリエイトリンクはありません。
コメント
コメントを投稿