[email protected] と末尾に空白が付いた [email protected] は、画面ではほぼ同じに見えても文字列としては別物になる。
空白が起こす問題
- 同じメールなのに重複として検出されない
- ID照合が一致しない
- 必須値が入っているように見えて、実質は空白だけ
- 商品コードの検索でヒットしない
trimする前に元データを見る
前後空白を全部消せばよいとは限らない。
自由記述の文章や固定幅データでは、空白自体に意味がある場合もある。どの列を正規化してよいか決める。
必須チェックでは空白だけの値も確認する
値が空白だけなら、業務上は未入力として扱いたいことが多い。
必須判定をするときは、対象列に応じて前後空白を除いた後の値も確認する。
重複判定の正規化ルール
メールアドレスのような列では、前後空白を除去して比較する運用が便利なことがある。
ただし、大文字小文字や全角半角まで同一視するかは別ルールだ。一度に全部変換せず、何を正規化したか記録する。
問題行には行番号、列名、元の値、検出理由、修正候補を残すと安全だ。
関連: CSVの重複をチェックする方法
CSVの正規化は、見えない差を消す処理だからこそ、何を消したかを追えるようにする。