pythonコード百科事典

コピペですぐ使えるPythonコードをご紹介

Pythonで郵便番号から住所を取得する方法

郵便番号から住所を取得するには、次のような方法があります。

日本郵便の郵便番号データから読み込む方法

  1. 郵便番号データを手に入れる: 郵便番号データを手に入れるには、日本郵便が提供する「郵便番号データダウンロードサービス」から郵便番号データをダウンロードすることができます。
  2. CSVファイルを読み込む: 郵便番号データは、CSV形式で提供されているため、Pythoncsvモジュールを使って、CSVファイルを読み込むことができます。
  3. 郵便番号を検索する: CSVファイルから、特定の郵便番号の行を検索することで、その郵便番号に対応する住所を取得することができます。

以下は、これらの手順を実装した例です。

import csv

# CSVファイルのパスを指定
csv_path = "zipcode.csv"

# CSVファイルを開く
with open(csv_path, "r", encoding="utf-8") as f:
    # CSVファイルを読み込む
    reader = csv.reader(f)
    # ヘッダー行をスキップ
    next(reader)
    # 各行を処理する
    for row in reader:
        # 郵便番号を取得
        zipcode = row[2]
        # 住所を取得
        address = row[6]
        # 郵便番号が一致するかどうかを判定
        if zipcode == "123-4567":
            # 一致した場合は、住所を表示
            print(address)

上記の例では、郵便番号を「123-4567」としています。これを変更することで、任意の郵便番号から住所を取得することができます。

郵便番号データダウンロードサービス

このサイトから郵便番号データをダウンロードするには、「郵便番号データダウンロードサービス利用規約」に同意して、「データダウンロード」ボタンをクリックする必要があります。

ダウンロードされるデータは、下記のような形式です。

1234567,北海道,札幌市中央区,西1丁目,1,1
1234568,北海道,札幌市中央区,西2丁目,2,2
1234569,北海道,札幌市中央区,西3丁目,3,3
:
:

これを読み込むには、上記の例のようにcsvモジュールを使用することができます。

Web APIを利用する方法

ちなみに、郵便番号から住所を取得するには、Web APIを利用することもできます。
Web APIを使用すると、郵便番号を入力するだけで、住所を取得することができます。
日本郵便が提供する「郵便番号検索API」や、住所録データを提供する企業が提供するAPIなどがあります。

郵便番号検索API

郵便番号検索APIを使用するには、APIキーが必要です。
APIキーは、サイトにアクセスして登録することで取得することができます。
取得したAPIキーを使用して、APIを呼び出すことで、郵便番号から住所を取得することができます。

以下は、郵便番号検索APIを使用して、郵便番号から住所を取得する例です。

import requests

# APIキーを指定
api_key = "your_api_key"

# 郵便番号を指定
zipcode = "123-4567"

# APIのURLを生成
url = f"https://zipcloud.ibsnet.co.jp/api/search?zipcode={zipcode}&key={api_key}"

# APIを呼び出す
response = requests.get(url)

# 結果を表示
if response.status_code == 200:
    # ステータスコードが200(OK)の場合
    # レスポンスのJSONを取得
    data = response.json()
    # 住所を取得
    address = data["results"][0]["address1"]
    print(address)
else:
    # ステータスコードが200以外の場合
    print("API Error")

上記の例では、requestsモジュールを使用して、APIを呼び出しています。
また、結果を表示する前に、ステータスコードを確認しています。
ステータスコードが200(OK)の場合は、住所を取得して表示しています。
それ以外の場合は、エラーが発生したと判断して、"API Error"を表示しています。