新卒エンジニアの@yhorikawaです。
新卒で入社してからこれまで郵便番号を扱うことが多かったのですが、郵便番号の仕様を知らず困った個所が複数あったのでまとめようと思います。
また、日本郵政のcsvに関してもいくつかまとめます。
郵便番号から住所は一意に決まらない
郵便番号から住所を検索する際に郵便番号から住所が一意に決まると思っていましたが、実際には1つの郵便番号で複数の住所を持つ場合がありました。
例えば080-1189の場合
北海道河東郡士幌町共豊
北海道河東郡士幌町士幌(南一区18号~21号南)
北海道河東郡士幌町東台
北海道河東郡士幌町富秋
北海道河東郡士幌町中士幌
北海道河東郡士幌町中士幌勝和
北海道河東郡士幌町中士幌北
北海道河東郡士幌町中士幌北団地
北海道河東郡士幌町中士幌共進
北海道河東郡士幌町中士幌新東団地
北海道河東郡士幌町中士幌新南
北海道河東郡士幌町中士幌西
北海道河東郡士幌町中士幌東団地
北海道河東郡士幌町中士幌文化
北海道河東郡士幌町中士幌豊進
北海道河東郡士幌町中士幌南
北海道河東郡士幌町中士幌明生
のように17件存在しています。
私のように一意に決まると思い込んでいると意図した検索結果にならないので気を付ける必要があります。
同じ郵便番号でも別の都道府県の場合がある
郵便番号から住所は一意に決まらないが県は一意に決まるだろうと思っていましたが、3つ郵便番号が同じでも都道府県が違う郵便番号があるそうです。
498-0000 愛知県弥富市, 三重県桑名郡木曽岬町
618-0000 京都府乙訓郡大山崎町, 大阪府三島郡島本町
871-0000 福岡県築上郡吉富町大分県 中津市
階数が多い建物は階ごとに郵便番号が振られている場合がある
階数が多い大きな建物の場合郵便番号がその建物の階ごとに割り振られている場合があります。
日本郵政のCSVを使用する場合に気を付けること
日本郵政が配布している郵便番号データを使用する場合に気を付けることです。
1. レコードが複数の行に分割されている
1つのレコードが複数行に分割されてはいっている場合があります。
例えば京都府の住所ですが
26102,"602 ","6028368","キヨウトフ","キヨウトシカミギヨウク","キタマチ","京都府","京都市上京区","北町(上の下立売通天神道西入上る、上の下立売通御前西入、上",0,0,0,0,0,0
26102,"602 ","6028368","キヨウトフ","キヨウトシカミギヨウク","キタマチ","京都府","京都市上京区","の下立売通御前西入上る、上の下立売通御前西入2丁目、上の下立売通御前西入",0,0,0,0,0,0
26102,"602 ","6028368","キヨウトフ","キヨウトシカミギヨウク","キタマチ","京都府","京都市上京区","2筋目、下長者町通御前西入、天神道上の下立売上る、天神道仁和寺街道下る、",0,0,0,0,0,0
26102,"602 ","6028368","キヨウトフ","キヨウトシカミギヨウク","キタマチ","京都府","京都市上京区","天神道下立売上る、天神道妙心寺道上る、天神道妙心寺道上る西入、仁和寺街",0,0,0,0,0,0
26102,"602 ","6028368","キヨウトフ","キヨウトシカミギヨウク","キタマチ","京都府","京都市上京区","道天神道西入下る、仁和寺街道天神道東入下る、御前通上の下立売上る、御前通",0,0,0,0,0,0
26102,"602 ","6028368","キヨウトフ","キヨウトシカミギヨウク","キタマチ","京都府","京都市上京区","上の下立売上る西入、御前通下立売上る、御前通下長者町上る西入、御前通仁",0,0,0,0,0,0
26102,"602 ","6028368","キヨウトフ","キヨウトシカミギヨウク","キタマチ","京都府","京都市上京区","和寺街道下る西入、御前通妙心寺道上る西入、御前通西裏上の下立売上る、御前",0,0,0,0,0,0
26102,"602 ","6028368","キヨウトフ","キヨウトシカミギヨウク","キタマチ","京都府","京都市上京区","通西裏下立売上る)",0,0,0,0,0,0
これで一つの住所になっています。
csvの中では複数レコードに分かれて入っているため、一行ずつ取り出すような操作をする際は気を付けなければいけません。
2. ()に様々な情報が書かれている
上の京都の例の場合は()の中に通りの名前が書かれていますが、それ以外にも()の中に様々な情報が書かれています。
453-0002 愛知県名古屋市中村区名駅(1-1-8、1-1-12、1-1-13、1-1-14、1-3-4、1-3-7)
450-0002 愛知県名古屋市中村区名駅(その他)
のように()の中に条件が入っている場合があるので注意する必要があります。
3. 「以下に記載がない場合」の存在
010-0000等のように以下に記載がない場合といった文言が入っているレコードがあります。
この以下とはそのレコード以下のことを表すのですが、これも1行ずつ取り出して保存する処理などの場合にそのまま保存すると困る場合があるので注意が必要です。
最後に
今回は実際に自分自身が業務で郵便番号を扱う中で困った個所についてまとめました。
これ以外にも知らないと困る箇所はあるのかなと思います。
これらが改善されたデータが配布されたらいいなと思いました、、、
参考にした記事