今回は、日本郵政で提供されているCSVはシステムだと使いにくいので、システムで利用しやすいように加工する手順を紹介します。
日本郵政:日本郵便 – 郵便番号データダウンロード
日本郵政の郵便番号CSVの加工する方法
日本郵政が公開している郵便番号CSVをシステム等で使いやすくする方法を紹介します。
日本郵政から郵便番号CSVをダウンロード
- 日本郵政の「読み仮名データの促音・拗音を小書きで表記するもの(zip形式)」を開く
- そして都道府県一覧の全国一括から
ZIPファイルをダウンロードする
Excelで郵便番号CSVを取込・加工
先ほどダウンロードした全国一括のZIPファイルを解凍します。そして中に入っている「KEN_ALL.CSV」をExcelで読み込んで編集していきます。
郵便番号CSVをExcelへ読み込む
- Excelを起動して新しいブックを開いて
空のブックをクリックする
- [データ] → [データの取得] → [ファイルから] → [テキストまたはCSVから] を順に選択
- 日本郵政からダウンロードした「KEN_ALL.CSV」をインポート
- 画面下部にある [データの変換] ボタンをクリック
- データの変換を行うと、以下のような画面が表示される
郵便番号列をテキストデータへ変換
- 郵便番号の列を全部選択してから[変換]→[データ型:整数]→[テキスト]を選択
- 郵便番号の列をテキストデータへ変換
- 表示されたダイアログで[現在のものを置換]をクリック
不要な列を除く
- 不要な列を[ctrl]キーを押しながら複数の列を選択して
- 右クリックして[列の削除]を選択
- 不要な列を削除
※今回はcolumn3、column7、column8、column9のみを残す
UTF-8でCSVを作成
- [ファイル]→[閉じて読み込む]を選択して
- CSVデータをExcelへ読み込む
- するとExcelの画面へ編集したCSVデータが読み込む
- [ファイル] → [名前を付けて保存] → [CSV UTF-8(カンマ区切り)]で保存してCSVファイルを作成
ここではファイル名を「zip.csv」とする
するとダイアログで「選択したファイルの種類は複数のシートを含むブックをサポートしません。」と言われるのでOKボタンをクリックします。
すると所定の場所にCSVファイル(zip.csv)が作成されます。
テキストエディタで郵便番号CSVを編集
次にExcelを使って作成した郵便番号CSVをテキストエディタを使って編集します。
(今回はサクラエディタを使用します)
テキストエディタで郵便番号CSVを表示
不要な「以下に掲載がない場合」文字列を置換して除去
手順
- テキストエディタのカーソルを先頭へ移動
- [ ctrlキー ]と[ rキー ]([ 検索 ]→[ 置換 ])で置換ダイアログを表示
- ダイアログの置換前に「以下に掲載がない場合」と入力
- 置換後は空欄のまま
- [すべて置換]ボタンをクリック
例
0600000,北海道,札幌市中央区,以下に掲載がない場合
↓(以下の様にする)
0600000,北海道,札幌市中央区,
不要な「の次に番地がくる場合」文字列を検索して除去
手順
- まずテキストエディタのカーソルを先頭へ移動
- [ ctrlキー ]と[ fキー ]([ 検索 ]→[ 検索 ])で検索ダイアログを表示
- ダイアログの条件に「の次に番地がくる場合」と入力
- [下検索]ボタンをクリック
そして見つかった「***の次に番地がくる場合」を削除します。
(***は、何かしらの文字を意味)
例
3060433,茨城県,猿島郡境町,境町の次に番地がくる場合
↓(以下の様にする)
3060433,茨城県,猿島郡境町,
不要な「(*****)」文字列を置換して除去
手順
- まずテキストエディタのカーソルを先頭へ移動
- [ ctrlキー ]と[ rキー ]([ 検索 ] → [ 置換 ])で置換ダイアログを表示
- ダイアログの置換前に「(.+?)」と入力
- 置換後は空欄のまま
- 「正規表現」へチェックを入れる
- [ すべて置換 ]ボタンをクリック
例
0600042,北海道,札幌市中央区,大通西(1~19丁目)
↓(以下の様にする)
0600042,北海道,札幌市中央区,大通西(1~19丁目)
不要な複数行にまたがった行を検索して除去
手順
- まずテキストエディタのカーソルを先頭へ移動
- [ctrlキー]と[fキー]([検索]→[検索])で検索ダイアログを表示
- ダイアログの条件に「(」と入力
- 「下検索」ボタンをクリック
例
0660005,北海道,千歳市,協和(88-2、271-10、343-2、404-1、427-
0660005,北海道,千歳市,3、431-12、443-6、608-2、641-8、814、842-
0660005,北海道,千歳市,5、1137-3、1392、1657、1752番地)
↓(以下の様にする)
0660005,北海道,千歳市,協和
複数行にまたがったカッコのデータを削除して1行にしていきます。
(こんな使いにくいデータ構造、誰が使うんだか。。。。)
日本郵政の郵便番号CSVが使いにくい点
郵便番号を使ったシステムは世の中に多いですが、参照元にする日本郵政の郵便番号CSVが使い物になりません。
ここではどういった点が使いにくいのか紹介します。より詳しい内容は「郵便番号から住所を検索するサービスにまともなものがない」で解説されています。
注略コメントのような文字列が混ざっている
CSVデータの中に、「以下に掲載がない場合」や「***の次に番地がくる場合」などの注略コメントのような文字がCSVに混ざっています。
0600000,北海道,札幌市中央区,以下に掲載がない場合
3060433,茨城県,猿島郡境町,境町の次に番地がくる場合
また()で括られた注略コメントの
9800021,宮城県,仙台市青葉区,中央(次のビルを除く)
0600042,北海道,札幌市中央区,大通西(1~19丁目)
8961412,鹿児島県,薩摩川内市,下甑町瀬々野浦(1700番地~、内川内)
0285102,岩手県,岩手郡葛巻町,葛巻(第40地割「57番地125、176を除く」~第45地割)
などもあります。
複数行にまたがったデータ構造になっている
CSVデータが以下のような複数行にまたがった構造になっています。
(CSVのデータ構造がこんなことになっているのか。)
0660005,北海道,千歳市,協和(88-2、271-10、343-2、404-1、427-
0660005,北海道,千歳市,3、431-12、443-6、608-2、641-8、814、842-
0660005,北海道,千歳市,5、1137-3、1392、1657、1752番地)
これを手動で整形すると
0660005,北海道,千歳市,協和88-2番地
0660005,北海道,千歳市,協和271-10番地
0660005,北海道,千歳市,協和343-2番地
0660005,北海道,千歳市,協和404-1番地
0660005,北海道,千歳市,協和427-3番地
0660005,北海道,千歳市,協和431-12番地
0660005,北海道,千歳市,協和443-6番地
0660005,北海道,千歳市,協和608-2番地
0660005,北海道,千歳市,協和641-8番地
0660005,北海道,千歳市,協和814番地
0660005,北海道,千歳市,協和842-5番地
0660005,北海道,千歳市,協和1137-3番地
0660005,北海道,千歳市,協和1392番地
0660005,北海道,千歳市,協和1657番地
0660005,北海道,千歳市,協和1752番地
となります。
さいごに
今回は日本郵政が提供している郵便番号CSVデータを手動で整形する方法を紹介しました。
CSVデータを手作業で整形するとミスしやすいので、整形は自己責任で対応してください!一応zipcloudさんにて整形後のCSVが提供されているので、そちらをダウンロードすることも出来ます。
整形済み郵便番号CSVファイルのダウンロード
zipcloudで加工済みの郵便番号CSVをダウンロードすることもできます。またzipcloudでは郵便番号APIも用意されています。
参照ページ:郵便番号データのCSVファイル


















