13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

日本全国の郵便番号⇔住所変換を行うPythonライブラリ『Jusho』

Last updated at Posted at 2020-11-12

使用方法

$ pip install jusho
でインストール。 github

from jusho import Jusho, Address, City, Prefecture

postman = Jusho()

# 郵便番号から住所検索
print(postman.by_zip_code('160-0021'))  # '1600021', '〒1600021' などなど
# [Address(id=116156, city=City(id=1972, prefecture=Prefecture(id=36, kanji='東京都', kana='トウキョウト', eng='TOKYO T...

# 都道府県一覧
print(postman.prefectures)
# [Prefecture(id=0, kanji='北海道', kana='ホッカイドウ', eng='HOKKAIDO'), Prefecture(id=3, kanji='青森県', kana='アオモリケ...

# 都道府県の検索
osaka = postman.search_prefectures('大阪', 'kanji')[0]
print(postman.cities(osaka))
# [City(id=3613, prefecture=Prefecture(id=78, kanji='大阪府', kana='オオサカフ', eng='OSAKA FU'), kanji='大阪市都島区', ka...

# 都道府県を指定して市町村検索。指定せずに、全市町村から検索することもできます
shimamoto = postman.search_cities('三島郡島本町', prefecture=osaka)[0]
print(postman.addresses(shimamoto))
# [Address(id=264932, city=City(id=3799, prefecture=Prefecture(id=78, kanji='大阪府', kana='オオサカフ', eng='OSAKA FU'), kanji='三島郡島本町', kana='ミシマグンシマモトチョウ', eng='MISHIMA ...

# 町域検索。同様に市町村指定することもできます
aoba = postman.search_addresses('青葉', city=shimamoto)[0]
# `postman.search_addresses('青葉', prefecture=osaka)`, `postman.search_addresses('青葉')` なども有効ですが
# 結果は異なります(検索するスコープが異なるため)
print(aoba.hyphen_zip)
# 618-0015


admin_division_code: str = aoba.admin_division_code  # 27301

old_zip_code: str = aoba.old_zip_code  # 618

zip_code: str = aoba.zip_code  # 6180015 郵便番号

prefecture: Prefecture = aoba.prefecture  # Prefecture(id=78, kanji='大阪府', kana='オオサカフ', eng='OSAKA FU')

city: City = aoba.city  # City(id=3799, prefecture=Prefecture(id=78, kanji='大阪府', kana='オオサカフ', eng='OSAKA FU'), kanji='三島郡島本町', kana='ミシマグンシマモトチョウ', eng='MISHIMA GUN SHIMAMOTO CHO')

print('\n'.join((
    aoba.kanji,  # 青葉
    aoba.kana,  # アオバ
    aoba.eng,  # AOBA
    '--------',
    aoba.concat_kanji,  # 大阪府 三島郡島本町 青葉
    aoba.concat_kana,  # オオサカフ ミシマグンシマモトチョウ アオバ
    aoba.concat_eng,  # Aoba, Mishima Gun Shimamoto Cho, Osaka Fu
    '--------',
    aoba.city.kanji,  # 三島郡島本町
    aoba.city.kana,  # ミシマグンシマモトチョウ
    aoba.city.eng,  # MISHIMA GUN SHIMAMOTO CHO
    '--------',
    aoba.city.concat_kanji,  # 大阪府 三島郡島本町
    aoba.city.concat_kana,  # オオサカフ ミシマグンシマモトチョウ
    aoba.city.concat_eng,  # Mishima Gun Shimamoto Cho, Osaka Fu
    '--------',
    aoba.prefecture.kanji,  # 大阪府
    aoba.prefecture.kana,  # オオサカフ
    aoba.prefecture.eng,  # OSAKA FU
)))

郵便番号⇔住所変換ライブラリの『Jusho』

を紹介します(ステマ)

従来でもposutoというライブラリがあり、こちらもほぼ同等の情報を提供しています。
しかし、内部でjsonデータをdictとして保持しているためメモリを多く使い、かつ郵便番号→住所の一方向の検索しかできないという欠点があり、自分が使うには少々勝手が悪かったので新たにデータベースにデータを格納するタイプのライブラリにしました。

そのおかげで住所→郵便番号の検索もできるようになり、使い勝手がよくなったと思います。

データは日本郵便が公式で公開しているものを用い、一部データ抜けがある分に関しては自分で補いました。

使用方法は使用方法の通りです。

以下のように動作するdemoも用意しています。
demo

何かバグやリクエストなどあればgithubのほうによろしくお願いします。

ぜひ便利にお使いください!

13
11
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?