CSVの値にカンマや改行が含まれると、単純に区切って読む方法では列や行を取り違えることがあります。見た目を直す前に、入力と読み取り側がどの形式を想定しているかを確認します。
公開資料で確認できる基本
CSV形式の公開説明では、カンマ、二重引用符、改行を含むフィールドを二重引用符で囲む扱いが説明されています。囲まれた値の中の二重引用符は、二つ重ねて表します。この資料は情報提供の文書で、すべての入出力環境が同じ動きをする保証ではありません。
架空の値で見る
説明用に、二列の見出しを「対象,備考」とします。備考の値が「赤,青」の場合、値の中のカンマと列の区切りを区別する必要があります。単純な文字列の分割ではなく、想定形式に対応した読み取り方法を使います。
問題を切り分ける表
| 症状 | 確認すること |
|---|---|
| 列が増える | 値の中に区切り文字があるか |
| 行が増える | 値の中の改行を扱えているか |
| 引用符が残る | 引用符の解釈が一致しているか |
| 特定行だけ崩れる | その行の元の記述と列数 |
文字コードの問題と、区切りの問題を同じものとして直さないことも大切です。
修正前に残すもの
原本、問題が出た行への参照、取り込み設定を保存します。値の中のカンマをすべて削除するなど、意味が変わる一括置換を先にしません。元の内容が必要な項目か確認します。
取り込みを試すとき
架空の小さなデータで、通常の値、カンマを含む値、引用符を含む値、改行を含む値を分けて確かめます。読み込めただけでなく、それぞれの値と列数が保たれたかを見ます。検証した設定を本番へ適用できるかも確認します。
テストで見る具体的な値
架空の二列データなら、片方に識別用の「甲」、もう片方に「赤,青」という値を入れます。取り込み後も二列で、備考の中にカンマが残っているかを確認します。改行や引用符は別の行で試し、どの条件で崩れるかを分けます。個人情報を含む実データを、最初の試験用に使う必要はありません。

コメント