郵便番号表

http://www.post.japanpost.jp/zipcode/dl/kogaki.html

郵便番号/住所の全国データをDLしてみる。

こんな感じ↓。

01101,"060  ","0600000","ホッカイドウ","サッポロシチュウオウク","イカニケイサイガナイバアイ","北海道","札幌市中央区","以下に掲載がない場合",0,0,0,0,0,0
01101,"064  ","0640941","ホッカイドウ","サッポロシチュウオウク","アサヒガオカ","北海道","札幌市中央区","旭ケ丘",0,0,1,0,0,0

「県コード、旧郵便番号、新番号、読み1、読み2、読み3、漢字1、漢字2、漢字3、(フラグ6つ)」
…となってるらしい。

フツーに利用しようとして、必要なのは 2,6,7,8 番目のデータだけだな。

ということで、こちょこちょと弄って、2,6,7,8 番目のデータだけを抽出、デフォルトのデータはでか過ぎ(12MB)なので、郵便番号の先頭の数字毎にファイルを10個に分割してみた。

$out = nil
ARGF.each do |l|
  a = l.split(/,/)
  a[0].sub!(/^./,'')
  $cityCode = $&
  p = P.index(a[1])+a[2]
  shi[p] = a[1]
  if $preCode != $cityCode
    $out = File.open($cityCode, "w")
  end
  $out.printf "%s,%s,%s\n",a[0], P.index(p), a[3]
  $preCode = $cityCode.dup
end

こんな↑感じで。

  281315 Dec 20 18:33 0
  114668 Dec 20 18:33 1
  108584 Dec 20 18:33 2
  186744 Dec 20 18:33 3
  210139 Dec 20 18:33 4
  217649 Dec 20 18:33 5
  365382 Dec 20 18:34 6
  221648 Dec 20 18:34 7
  224409 Dec 20 18:34 8
  421742 Dec 20 18:34 9
12149889 Nov 26 17:13 ken_all.csv

12MBのデータが、100kB〜400kBのデータに分割できた。

…ふむふむ。郵便番号って、9で始まる住所が一番多いのか。