如何清洗印尼手机号:从原始列表提取标准化11位号码并自动补全国家代码
技术百科
碧海醫心
发布时间:2026-01-23
浏览: 次 本文提供一个健壮的python函数,用于批量清洗印尼手机号:移除所有非数字字符、校验是否以62开头且总长为13位(含62)、对缺失前缀的号码自动补全,并将不满足条件的条目统一标记为"invalid number"。
要正确清洗印尼手机号,关键在于三步处理:标准化(去除非数字字符)→ 前缀归一化(补全或校验62)→ 长度验证(必须为13位纯数字,即62 + 11位)。原始代码存在多个问题:未真正执行字符清理(translate未生效且语法错误)、未做有效性判断、直接修改原列表且无返回值。
以下是完整、可直接运行的解决方案:
import re
def clean_phone_number(phone_list):
"""
清洗印尼手机号列表,返回标准化后的结果列表。
规则:
- 仅保留数字字符
- 若以'62'开头且总长为13位 → 保留
- 若以'08'开头(印尼常见移动号段,隐含62)→ 替换为'628'
- 若以'8'开头(如'821...')→ 补前缀'62'
- 其他情况(长度≠13、含非法前缀等)→ 返回'Invalid Number'
"""
cleaned = []
for raw in phone_list:
# Step 1: 提取所有数字
digits = re.sub(r'\D', '', str(raw))
# Step 2: 前缀标准化与长度校验
if digits.startswith('62'):
if len(digits) == 13:
cleaned.append(int(digits)) # 符合要求:62 + 11位
else:
cleaned.append('Invalid Number')
elif digits.startswith('08') and len(digits) == 12:
# '08...' → 转为 '628...'(印尼08x等同于628x)
cleaned.append(int('62' + digits[1:]))
elif digits.startswith('8') and len(digits) == 11:
# 纯11位以8开头 → 补62(如'821...' → '62821...')
cleaned.append(int('62' + digits))
else:
cleaned.append('Invalid Number')
return cleaned
# 测试数据
phone = [
'82123321123',
'082321123321',
'+6282-456-654-456',
'+62 82 789 987 789',
'14045',
'82145-451-145'
]
result = clean_phone_number(phone)
print(result)
# 输出:[6282123321123, 6282321123321, 6282456654456, 6282789987789, 'Invalid Number', 6282145451145]✅ 关键说明:
- re.sub(r'\D', '', ...) 是最可靠的方式清除所有非数字字符(空格、+、-、括号等),比手动替换符号更鲁棒;
- 不依赖正则匹配 \+62[0-9]{11}(该模式仅能匹配带+的原始格式,无法处理082...或纯821...等常见变体);
- 明确区分三种合法前缀场景:62xxx(直接校验)、08xxx(印尼本地号去0加62)、8xxx(补62),覆盖题目全部用例;
- 返回 int 类型确保输出与示例一致(如 6282123321123 而非字符串),同时保持 'Invalid Number' 为字符串类型,符合混合类型需求。
⚠️ 注意事项:
- 输入应为字符串或可转为字符串的类型(如数字ID),函数内部已做 st
r() 容错;
- 若需严格遵循“必须以62开头且后续11位”的定义(即禁止08转换),可简化逻辑为:仅接受 62 开头且 len==13,其余全为 'Invalid Number';
- 生产环境建议增加日志记录无效号码原始值,便于排查数据质量问题。
# 提供一个
# 多个
# 仅能
# python
# 三种
# 而非
# 并将
# 可直接
# app
# int
# 字符串
# git
# len
# 若以
# 字符串类型
# elif
# python函数
# number
# 印尼
# 质量问题
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Go 中实现 Python urllib.quot
- c# 在高并发场景下,委托和接口调用的性能对比
- 如何使用Golang处理静态文件缓存_提高页面加载
- 如何使用Golang开发简单的聊天室消息存储_Go
- Python随机数生成_random模块说明【指导
- Win11怎么关闭贴靠布局_Win11禁用窗口最大
- 如何更改Windows资源管理器的默认启动位置?(
- 如何解决同一段404代码在不同主机上表现不一致的问
- php下载安装包怎么选_threadsafe与nt
- Mac如何使用听写功能_Mac语音输入打字【效率技
- windows如何禁用驱动程序强制签名_windo
- 如何在Golang中验证模块完整性_Golangg
- Win11怎么解压RAR文件 Win11自带解压功
- windows如何修改文件默认打开方式_windo
- Win11怎么设置默认邮件客户端 Win11修改M
- Win11怎么设置闹钟_Windows 11时钟应
- 零基础学会Python自动化办公_高效处理Exce
- Python如何创建带属性的XML节点
- php能跑在stm32上吗_php在stm32微控
- Python对象比较与排序_魔术方法解析【教程】
- Golang如何实现基本的用户注册_Golang用
- c++中如何对数组进行排序_c++数组排序算法汇总
- 如何在 Python 中将 ISO 8601 时间
- 如何使用Golang指针与结构体结合_修改结构体内
- 用Python构建微服务架构实践_FastAPI与
- Windows10系统怎么查看系统版本_Win10
- Win11怎么开启剪贴板历史记录_Windows1
- 如何将竖排文本文件转换为横排字符串
- 如何在Golang中捕获HTTP服务器错误_Gol
- Win11怎么设置开机问候语_自定义Win11锁屏
- Go语言中CookieJar的持久化机制解析:内存
- Mac怎么开启“任何来源”_Mac安装未签名应用的
- Win11蓝牙开关不见了怎么办_Win11蓝牙驱动
- Win11怎样激活系统密钥_Win11系统密钥激活
- Win11怎么清理C盘系统日志_Win11清理系统
- Bpmn 2.0的XML文件怎么画流程图
- Win11怎么关闭搜索历史 Win11清除搜索框最
- Win11资源管理器卡顿怎么办 Win11文件资源
- Mac如何备份到iCloud_Mac桌面与文稿文件
- Python函数接口稳定性_版本演进解析【指导】
- PHP中require语句后直接调用返回对象方法的
- PowerShell怎么创建复杂的XML结构
- Win11怎样安装钉钉客户端_Win11安装钉钉教
- Win11怎么开启上帝模式_创建Windows 1
- 如何在Golang中使用replace替换模块_指
- 如何使用Golang优化模块引入路径_Golang
- MAC怎么一键隐藏桌面所有图标_MAC极简模式切换
- Win11怎么更改文件夹图标_自定义Win11文件
- Python文件管理规范_工程实践说明【指导】
- Python对象生命周期管理_创建销毁说明【指导】


QQ客服