如何使用python-phonenumbers库仅验证手机号、排除固定电话?
可以实现,python-phonenumbers 库内置了号码类型判断能力,你只需要在原有有效性校验的基础上,额外增加号码类型的判断即可排除固定电话。
phonenumbers.number_type() 方法会返回号码的类型枚举,其中 phonenumbers.PhoneNumberType.MOBILE 对应手机号码类型,库内已经内置了全球各国的手机号段规则,无需自行匹配号段。
修改后的参考代码如下:
import phonenumbers # 注意不要使用list作为变量名,这是Python的内置关键字,会覆盖默认列表方法 number_list = [...] # 待校验的号码列表 country = "XX" # 替换为实际对应国家的二字码,例如CN代表中国、US代表美国 is_valid = [] for number in number_list: try: parsed_number = phonenumbers.parse(number, country) # 同时校验号码合法、且类型为手机号码 is_valid_mobile = phonenumbers.is_valid_number(parsed_number) and \ phonenumbers.number_type(parsed_number) == phonenumbers.PhoneNumberType.MOBILE is_valid.append(is_valid_mobile) except: is_valid.append(False)
可选适配说明:部分国家/地区存在部分号段无法明确区分是固定电话还是手机号码的情况,如果你需要兼容这类场景,可以把号码类型判断逻辑调整为同时匹配 MOBILE 和 FIXED_LINE_OR_MOBILE 两个枚举值即可。
内容的提问来源于stack exchange,提问作者Michal
相关产品推荐
相关产品推荐

