web-dev-qa-db-ja.com

Pythonの国コードから国名を取得しますか?

私は2 python libraries: phonenumberspycountry 。対応する国名。

phonenumbersでは、parseに完全な数値を入力する必要があります。 pycountryでは、国ISOを取得します。

図書館の国コードを指定して国名を取得するための解決策または方法はありますか?

12
ALH

phonenumbersライブラリはかなり文書化されていません。代わりに、ユニットテストで機能について学ぶために、元のGoogleプロジェクトを調べることを勧めています。

PhoneNumberUtilTest unittests は特定のユースケースをカバーしているようです。 getRegionCodeForCountryCode() function を使用して、電話番号の国部分を特定の地域にマッピングします。 getRegionCodeForNumber() function もあり、解析された数値の国コード属性を最初に抽出するように見えます。

そして実際、対応する phonenumbers.phonenumberutil.region_code_for_country_code()phonenumbers.phonenumberutil.region_code_for_number() 関数があり、Pythonでも同じことができます。

_import phonenumbers
from phonenumbers.phonenumberutil import (
    region_code_for_country_code,
    region_code_for_number,
)

pn = phonenumbers.parse('+442083661177')
print(region_code_for_country_code(pn.country_code))
_

デモ:

_>>> import phonenumbers
>>> from phonenumbers.phonenumberutil import region_code_for_country_code
>>> from phonenumbers.phonenumberutil import region_code_for_number
>>> pn = phonenumbers.parse('+442083661177')
>>> print(region_code_for_country_code(pn.country_code))
GB
>>> print(region_code_for_number(pn))
GB
_

結果のリージョンコードは2文字のISOコードなので、pycountryで直接使用できます。

_>>> import pycountry
>>> country = pycountry.countries.get(alpha_2=region_code_for_number(pn))
>>> print(country.name)
United Kingdom
_

_.country_code_属性は整数なので、電話番号なしでphonenumbers.phonenumberutil.region_code_for_country_code()を使用できます。国コード:

_>>> region_code_for_country_code(1)
'US'
>>> region_code_for_country_code(44)
'GB'
_
23
Martijn Pieters

小さな追加-文字列コードで国の接頭辞を取得することもできます。例えば。:

from phonenumbers.phonenumberutil import country_code_for_region

print(country_code_for_region('RU'))
print(country_code_for_region('DE'))
1
valex