You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python phonenumbers获取各国手机号的规定位数?

获取各国手机号规定位数(基于phonenumbers库)

可以通过phonenumbers库的元数据对象直接获取对应国家/地区移动号码的合法长度范围,无需从示例号码推导。具体实现步骤如下:

核心实现代码

import phonenumbers

def get_mobile_number_valid_lengths(country_code):
    # 通过国家代码获取地区编码(如中国86对应"CN")
    region_code = phonenumbers.region_code_for_country_code(country_code)
    if not region_code:
        return None
    
    # 获取对应地区的号码元数据
    metadata = phonenumbers.metadata_for_region(region_code)
    # 提取移动号码的描述对象
    mobile_number_desc = metadata.mobile
    
    # 返回合法长度的元组(固定长度则为单元素元组,多长度则包含所有可能值)
    return mobile_number_desc.possible_lengths

# 示例使用
# 中国手机号长度
print(get_mobile_number_valid_lengths(86))  # 输出:(11,)
# 美国手机号长度
print(get_mobile_number_valid_lengths(1))   # 输出:(10,)
# 印度手机号长度(部分地区有10/11位)
print(get_mobile_number_valid_lengths(91))  # 输出:(10, 11)

关键说明

  • 你之前的尝试仅获取了顶层元数据对象,未深入到mobile子对象的possible_lengths属性,这是获取合法长度的核心入口。
  • possible_lengths返回的是元组,包含该国家/地区所有合法的移动号码长度,覆盖固定长度和多长度两种场景。
  • 若需获取固定电话等其他类型号码的长度,只需将metadata.mobile替换为metadata.fixed_line、metadata.toll_free等对应类型即可。

备选方案(无需额外库)

如果不想依赖phonenumbers,也可以直接解析libphonenumber的原始元数据文件(XML格式),但操作复杂度较高,不推荐。

内容的提问来源于stack exchange,提问作者user21143082

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 04:01:44