CSVを受け取って、テキストの行数から見出しの1行を引いたら、元の一覧より件数が多い。そんなときは、メモ欄の中に改行が入っていないか確認してみてください。
■ 架空の3件で見てみます
以下は説明用に作った架空データです。実際のお客様のデータや作業実績ではありません。半角の「"」は、項目を囲むダブルクォーテーションです。
商品コード,メモ
A101,通常
A102,"午前着希望
箱を分ける"
A103,"赤,青セット"
テキストとして改行で区切ると、見出しを含めて5行あります。ただし、データはA101・A102・A103の3件です。見出しも含めたレコード(表の1行分のまとまり)は4件になります。
A102のメモは「午前着希望」と「箱を分ける」を改行でつないだ一つの項目です。「箱を分ける」だけで別のデータにはなりません。
A103も同様に、「赤,青セット」のカンマはメモの一部です。列は商品コードとメモの2列で、3列ではありません。
この例はPythonの標準csvモジュールで読み込み、見出しを除いて3件、全レコードが2項目、改行とカンマを含むメモがそれぞれ一つの値になることを確認しています。特定の表計算ソフトや業務システムでの動作保証ではありません。
■ 件数が合わないときの確認順
1.まず原本を残す
件数を合わせようとして改行や引用符を一括削除しないでください。メモの意味や、項目の区切りが変わるおそれがあります。確認はコピーで行います。
2.何を数えた数値かを確認する
「テキストの行数」「見出しを含むレコード数」「見出しを除いたデータ件数」を分けます。この例なら、それぞれ5・4・3です。画面の幅による折り返し表示も、実際に入っている改行とは別です。
3.読み込み結果を少数の例で確認する
利用するソフトのCSV取り込み機能で、区切り文字や引用符の扱いを確認します。上のような架空例を使い、A102が1行分になり、メモ内の改行が残るか、A103のメモが別の列に割れていないかを見ます。具体的な操作や対応範囲はソフトによって異なります。
4.それでも合わなければ出力元に確認する
見出しの有無、出力対象の条件、CSVの形式を確認します。引用符が閉じていないなど、ファイル自体に問題がある可能性もあります。「改行があるから正常」と決めつけないことも大切です。
■ 受け渡し時に添える一言
この例なら「見出しあり・データ3件・2列・メモ内に改行とカンマを含む」と伝えると、確認の前提をそろえやすくなります。
行数が違うだけで、データが増えた・欠けたとは判断できません。まずは、数え方と一つのデータの区切りを確認しましょう。
参考:RFC 4180「Common Format and MIME Type for Comma-Separated Values (CSV) Files」第2節(特に項目6)。CSVの一般的な形式を記述したInformational文書で、すべてのCSVやソフトの実装が同じであることを保証するものではありません。