以下は2023年12月下旬に、日本郵便株式会社のウェブサイトから郵便番号の情報が納められたファイルをダウンロードして、郵便番号とそれに対応する町域等をデータフレームにした例。UTF-8形式のファイルをダウンロードしている。ダウンロードしたファイルはテンポラリファイルとして保存をして削除をしているが、そのファイルから展開したファイル(utf_ken_all.csv)はカレントディレクトリに保存をして、そのまま残していることに注意。
PS > $url = "https://www.post.japanpost.jp/zipcode/dl/utf/zip/utf_ken_all.zip" PS > $tempfile = New-TemporaryFile PS > $wc = New-Object Net.WebClient PS > $wc.DownloadFile($url, $tempfile) PS > Move-Item $tempfile "$tempfile.zip" PS > Expand-Archive -Force "$tempfile.zip" . PS > Remove-Item "$tempfile.zip" PS > Get-ChildItem utf_ken_all.csv | Select-Object Name, Length Name Length ---- ------ utf_ken_all.csv 18333984 PS > $zip = Import-Csv -Encoding UTF8 .\utf_ken_all.csv -Header (1..15)
町域で検索を試してみる。レゴランドジャパンが位置する住所(金城ふ頭)を検索してみると、一か所しか登録されていないことがわかる。ユニバーサル・スタジオ・ジャパンが位置する「桜島」も同様。「石見」が含まれる町域は複数あるが「舞菜香」という町域は一か所も登録されていないことがわかる。
PS > $h = "3", "7", "8", "9" PS > $idx = ($zip.9 | sls "^金城ふ頭$").LineNumber | % {$_ - 1} PS > Write-Host $idx 67276 PS > $zip[$idx] | Select-Object $h 3 7 8 9 - - - - 4550848 愛知県 名古屋市港区 金城ふ頭 PS > $idx = ($zip.9 | sls "^桜島$").LineNumber | % {$_ - 1} PS > Write-Host $idx 84517 PS > $zip[$idx] | Select-Object $h 3 7 8 9 - - - - 5540031 大阪府 大阪市此花区 桜島 PS > $idx = ($zip.9 | sls "石見").LineNumber | % {$_ - 1} PS > Write-Host $idx 4013 82495 87335 95014 98416 98422 98429 99001 100259 110949 PS > $zip[$idx] | Select-Object $h 3 7 8 9 - - - - 0430401 北海道 二海郡八雲町 熊石見日町 6101128 京都府 京都市西京区 大原野石見町 5860058 大阪府 河内長野市 石見川 6360212 奈良県 磯城郡三宅町 石見 6895663 鳥取県 日野郡日南町 上石見 6895665 鳥取県 日野郡日南町 下石見 6895664 鳥取県 日野郡日南町 中石見 6980051 島根県 益田市 内田町(石見空港) 7100814 岡山県 倉敷市 石見町 7812145 高知県 吾川郡いの町 柳瀬石見 PS > $idx = ($zip.9 | sls "舞菜香").LineNumber | % {$_ - 1} PS > Write-Host $idx -1
なお、「sls」はSelect-Stringコマンドレットのエイリアス。