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

2020年10月16日システム

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

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

日本郵政:日本郵便 – 郵便番号データダウンロード

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

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

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

日本郵政の「読み仮名データの促音・拗音を小書きで表記するもの(zip形式)」を開きます。

そして都道府県一覧の全国一括からZIPファイルをダウンロードします。

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

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

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

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

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

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

[データ]→[データの取得]→[ファイルから]→[テキストまたはCSVから]を順に選択して日本郵政からダウンロードした「KEN_ALL.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 UTF-8(カンマ区切り)]で保存してCSVファイルを作成します。(ここではファイル名を「zip.csv」とします。)

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

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

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

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

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

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

テキストエディタで郵便番号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で取得するプログラミングを解説

プログラミングスクール受講メリット

・メンターにすぐ聞けるので分からないところでつまづかない
・受講生同士で学び合いモチベーション維持しやすい
・就学後に就職支援や進路サポートを受けることが出来る

ユート
ユート

Webプログラマ兼ブロガー | プログラミング基礎知識を発信|Webプログラマ歴は10年以上|JavaScript,PHP.HTML | 「人生の時間は有限。悪いことをしている時間はない」
プロフィール

2020年10月16日システム

Posted by ユート