かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

郵便番号のCSVをオレオレXMLに変換

ちょっと郵便番号の一覧の書かれたXMLが欲しくなったのでCSVから変換してみた。
CSVのダウンロードは↓からしました。
http://www.post.japanpost.jp/zipcode/download.html

このCSVを下のRubyスクリプトで食わせて完成。
一度メモリ上の配列に、必要な列だけ抜いた配列でデータを保持して、ERBでXMLに出力させようと思ったけど、メモリいっぱい食べるので諦めました。

require 'csv'

puts "<?xml version='1.0' ?>"
puts "<PostCodes>"
CSV.foreach("KEN_ALL.CSV") do |row|
  puts "<PostCode number='#{row[2]}' address='#{row[6] + row[7] + row[8]}' />"
end
puts "</PostCodes>"

これで以下のようなXMLをゲット

<?xml version='1.0' ?>
<PostCodes>
<PostCode number='0600000' address='北海道札幌市中央区以下に掲載がない場合' />
<PostCode number='0640941' address='北海道札幌市中央区旭ケ丘' />
…途中省略…
<PostCode number='9071544' address='沖縄県八重山郡竹富町鳩間' />
<PostCode number='9071800' address='沖縄県八重山郡与那国町以下に掲載がない場合' />
<PostCode number='9071801' address='沖縄県八重山郡与那国町与那国' />
</PostCodes>