zipcloudという郵便番号から住所を検索できるAPIpython3で利用しているときに、ターミナルで日本語が表示できなかったのでシェアします

元々のコード

 

import urllib.request

url = 'http://zipcloud.ibsnet.co.jp/api/search?zipcode=1000005'

contents = urllib.request.urlopen(url).read()
print(contents)

// ターミナルでの結果
b'{\n\t"message": null,\n\t"results": [\n\t\t{\n\t\t\t"address1": 
"\xe6\x9d\xb1\xe4\xba\xac\xe9\x83\xbd",\n\t\t\t"address2": 
"\xe5\x8d\x83\xe4\xbb\xa3\xe7\x94\xb0\xe5\x8c\xba",\n\t\t\t"address3": 
"\xe4\xb8\xb8\xe3\x81\xae\xe5\x86\x85",\n\t\t\t"kana1": "
\xef\xbe\x84\xef\xbd\xb3\xef\xbd\xb7\xef\xbd\xae\xef\xbd\xb3\xef\xbe\x84"
,\n\t\t\t"kana2": "\xef\xbe\x81\xef\xbe\x96\xef\xbe\x80\xef\xbe\x9e\xef\xbd\xb8",\n\t\t\t"kana3": 
"\xef\xbe\x8f\xef\xbe\x99\xef\xbe\x89\xef\xbd\xb3\xef\xbe\x81",\n\t\t\t"prefcode": 
"13",\n\t\t\t"zipcode": "1000005"\n\t\t}\n\t],\n\t"status": 200\n}'

修正版

デコードしてやることで解決できました!

import urllib.request

url = 'http://zipcloud.ibsnet.co.jp/api/search?zipcode=1000005'

contents = urllib.request.urlopen(url).read()
# ここが追加個所
contents = contents.decode('utf-8')
print(contents)

// 結果
{
        "message": null,
        "results": [
                {
                        "address1": "東京都",
                        "address2": "千代田区",
                        "address3": "丸の内",
                        "kana1": "トウキョウト",
                        "kana2": "チヨダク",
                        "kana3": "マルノウチ",
                        "prefcode": "13",
                        "zipcode": "1000005"
                }
        ],
        "status": 200
}

 

参考記事

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA