import phonenumbers
from phonenumbers import geocoder, carrier, timezone
# 初始化示例号码
phone_number_string = "+8618612345678"
parsed_number = phonenumbers.parse(phone_number_string, None)
# 检查号码是否有效
is_valid = phonenumbers.is_valid_number(parsed_number)
print(f"号码 {phone_number_string} 是否有效: {is_valid}")
# 获取国家区号
country_code = parsed_number.country_code
print(f"国家区号: {country_code}")
# 获取国家名称和两位字母简称
country_name = geocoder.description_for_number(parsed_number, "zh-CN")
country_code_alpha2 = phonenumbers.region_code_for_number(parsed_number)
print(f"号码所属国家: {country_name} ({country_code_alpha2.upper()})")
# 获取运营商信息
carrier_name = carrier.name_for_number(parsed_number, "zh-CN")
print(f"运营商: {carrier_name}")
# 获取号码的国际格式
international_format = phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.INTERNATIONAL)
print(f"国际格式: {international_format}")
# 获取号码的国内格式
national_format = phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.NATIONAL)
print(f"国内格式: {national_format}")
# 获取号码的E.164格式
e164_format = phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.E164)
print(f"E.164格式: {e164_format}")
# 获取号码所属时区
timezone_result = timezone.time_zones_for_number(parsed_number)
if timezone_result:
print(f"号码所属时区: {', '.join(timezone_result)}")
else:
print("无法确定号码所属时区")
输出结果:
号码 +8618612345678 是否有效: True
国家区号: 86
号码所属国家: Beijing (CN)
运营商: China Unicom
国际格式: +86 186 1234 5678
国内格式: 186 1234 5678
E.164格式: +8618612345678
号码所属时区: Asia/Shanghai