【お知らせ】ドメインをhttps://blog.mm-kun.comからhttps://uteee.comへ変更しました。

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

システム

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

どうもUT(@ut_1029)です。

今回は、日本郵政で提供されているCSVってシステムだと使いにくいので、システムで利用しやすく加工する方法を紹介します。

zipcloudから整形済み郵便番号CSVファイルをダウンロード
zipcloudで加工済みの「郵便番号データのCSVファイル」が提供されているので、そちらから郵便番号CSVをダウンロードすることもできます。

またzipcloudでは、「郵便番号検索API」も用意されています。

zipcloudの郵便番号検索APIを利用したサンプル
郵便番号検索APIを利用したサンプルコードを「JavaScriptで郵便番号APIをAjaxで取得するプログラミングを解説」で紹介しました。

日本郵政の郵便番号CSVの加工する方法

日本郵政が公開している郵便番号CSVをシステム等で使いやすくする方法を紹介します。

郵便番号CSVをダウンロード

日本郵政から郵便番号CSVをダウンロード

日本郵政から全国の郵便番号データをダウンロードします。

日本郵政の「読み仮名データの促音・拗音を小書きで表記するもの(zip形式)」にある都道府県一覧の全国一括からZIPファイルをダウンロードします。

手順
都道府県一覧画面の「全国一括」をクリック

Excelで郵便番号CSVを取込・加工

先ほどダウンロードした全国一括のZIPファイルを解凍します。そして中に入っている「KEN_ALL.CSV」をExcelで読み込んで編集していきます。

郵便番号CSVをExcelへ読み込む

郵便番号CSVをExcelへ読み込む
郵便番号CSVをExcelへ読み込む

Excelを起動して新しいブックを開きます。

手順
「空のブック」をクリック

郵便番号CSVをExcelへ読み込む
郵便番号CSVをExcelへ読み込む

次に日本郵政からダウンロードした「KEN_ALL.CSV」をインポートします。

手順
[データ]→[データの取得]→[ファイルから]→[テキストまたはCSVから]を順に選択

郵便番号CSVをExcelへ読み込む
郵便番号CSVをExcelへ読み込む

インポートを行うと、上記のような画面が表示されます。そしてデータを変換します。

手順
画面下部にある[データの変換]ボタンをクリック

郵便番号CSVをExcelへ読み込む
郵便番号CSVをExcelへ読み込む

データの変換を行うと、上記のような画面が表示されます。

郵便番号列をテキストデータへ変換

郵便番号列をテキストデータへ変換
郵便番号列をテキストデータへ変換

郵便番号の列をテキストデータへ変換します。

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

郵便番号列をテキストデータへ変換
郵便番号列をテキストデータへ変換

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

郵便番号列をテキストデータへ変換
郵便番号列をテキストデータへ変換

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

不要な列を除く

不要な列を除く
不要な列を除く

不要な列を削除します。

手順
不要な列を[ctrl]キーを押しながら複数列選択して右クリックして[列の削除]を選択
(今回はcolumn3、column7、column8、column9のみ残します。)

不要な列を除く
不要な列を除く

UTF-8でCSVを作成

UTF-8でCSVを作成
UTF-8でCSVを作成

編集したCSVのデータをExcelへ読み込みます。

手順
[ファイル]→[閉じて読み込む]を選択

UTF-8でCSVを作成
UTF-8でCSVを作成

するとExcelの画面へ編集したCSVデータが読み込まれます。

UTF-8でCSVを作成
UTF-8でCSVを作成

CSVファイルを作成します。

手順
[ファイル]→[名前を付けて保存]→[CSV UTF-8(カンマ区切り)]で保存
(ここではファイル名を「zip.csv」とします。)

UTF-8でCSVを作成
UTF-8でCSVを作成

するとダイアログで「選択したファイルの種類は複数のシートを含むブックをサポートしません。」と言われるのでOKボタンをクリックします。

すると所定の場所にCSVファイル(zip.csv)が作成されます。

テキストエディタで郵便番号CSVを編集

次にExcelを使って作成した郵便番号CSVをテキストエディタを使って編集します。
(今回はサクラエディタを使用します)

テキストエディタで郵便番号CSVを表示

テキストエディタで郵便番号CSVを表示
テキストエディタで郵便番号CSVを表示

不要な「以下に掲載がない場合」文字列を置換して除去

不要な文字列を置換・検索して除去
不要な文字列を置換・検索して除去

テキストエディタのカーソルを先頭へ移動させます。

手順
・[ ctrlキー ]と[ rキー ]([ 検索 ]→[ 置換 ])で置換ダイアログを表示
・ダイアログの置換前に「以下に掲載がない場合」と入力
・置換後は空欄のまま
・[すべて置換]ボタンをクリック

不要な「の次に番地がくる場合」文字列を検索して除去

不要な文字列を置換・検索して除去
不要な文字列を置換・検索して除去

まずテキストエディタのカーソルを先頭へ移動させます。

手順
・[ ctrlキー ]と[ fキー ]([ 検索 ]→[ 検索 ])で検索ダイアログを表示
・ダイアログの条件に「の次に番地がくる場合」と入力
・[下検索]ボタンをクリック

そして見つかった「***の次に番地がくる場合」を削除します。
(***は、何かしらの文字を意味)

不要な「(*****)」文字列を置換して除去

不要な文字列を置換・検索して除去
不要な文字列を置換・検索して除去

まずテキストエディタのカーソルを先頭へ移動させます。

手順
・[ ctrlキー ]と[ rキー ]([ 検索 ] → [ 置換 ])で置換ダイアログを表示
・ダイアログの置換前に「(.+?)」と入力
・置換後は空欄のまま
・「正規表現」へチェックを入れる
・[ すべて置換 ]ボタンをクリック

不要な複数行にまたがった行を検索して除去

不要な文字列を置換・検索して除去
不要な文字列を置換・検索して除去

まずテキストエディタのカーソルを先頭へ移動させます。

手順
・[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が提供されているので、そちらをダウンロードすることも出来ます。

zipcloudの郵便番号検索APIを利用したサンプル
郵便番号検索APIを利用したサンプルコードを「JavaScriptで郵便番号APIをAjaxで取得するプログラミングを解説」で紹介しました。

UT
UTの日常

当ブログ(UTの日常)を運営しているUTは「プログラミング関係の仕事をしている30代1児の父親」です。詳しくは「UTのプロフィール」をご覧ください。

システム

Posted by UT