日本郵便の郵便番号CSVを加工して使いやすくする方法

今回は、日本郵政で提供されているCSVはシステムだと使いにくいので、システムで利用しやすいように加工する手順を紹介します。
日本郵政:日本郵便 – 郵便番号データダウンロード
日本郵政の郵便番号CSVの加工する方法
日本郵政が公開している郵便番号CSVをシステム等で使いやすくする方法を紹介します。
日本郵政から郵便番号CSVをダウンロード

日本郵政の「読み仮名データの促音・拗音を小書きで表記するもの(zip形式)」を開きます。
そして都道府県一覧の全国一括からZIPファイルをダウンロードします。
Excelで郵便番号CSVを取込・加工
先ほどダウンロードした全国一括のZIPファイルを解凍します。そして中に入っている「KEN_ALL.CSV」をExcelで読み込んで編集していきます。
郵便番号CSVをExcelへ読み込む

Excelを起動して新しいブックを開いて「空のブック」をクリックします。

[データ]→[データの取得]→[ファイルから]→[テキストまたはCSVから]を順に選択して日本郵政からダウンロードした「KEN_ALL.CSV」をインポートします。

画面下部にある[データの変換]ボタンをクリックします。

データの変換を行うと、上記のような画面が表示されます。
郵便番号列をテキストデータへ変換

郵便番号の列を全部選択してから[変換]→[データ型:整数]→[テキスト]を選択して郵便番号の列をテキストデータへ変換します。

表示されたダイアログで[現在のものを置換]をクリックします。

するとテキストデータとなり、0始まりの郵便番号が正しく表示された状態となります。
不要な列を除く

不要な列を[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ファイル
郵便番号検索APIを利用したサンプル
郵便番号検索APIをAjaxで利用したサンプルコードを解説しています。
関連記事:JavaScriptで郵便番号APIをAjaxで取得するプログラミングを解説
ディスカッション
コメント一覧
まだ、コメントがありません