一次完整的实战记录:输入材料、WorkBuddy 配置、分步操作、排障过程、产出物。全程没有手写一行代码,但最终交付的是一个同事双击就能用的 Windows 小工具。
我在某通信运营商的地市分公司做政企产品,固话业务是日常事务之一。每月要做两件跟号码有关的活:
一是按反诈专项整治和外呼合规要求,核对各分局上报的号码清单,确认号码状态、归属、是否在黑名单内;
二是「缩位」——把完整的固话号码按内部规则压成短号,方便客户经理外呼时快速拨号,也避免完整号码在内部系统里到处留痕。
真正烦的不是规则复杂,是分局报上来的表长得不一样。同一个字段,有人填 023-8888 6666,有人填 02388886666,有人从系统里导出成 +862388886666,还有人把分机号塞在同一个单元格里写 88886666转801。更常见的是 Excel 自动把前导 0 吃掉,整列变成科学计数法 8.88889E+10。
原来的做法是逐条看、逐条改。一批三千条,四个小时起步,改完还要抽查一遍。问题的关键不是慢,而是人工改这种重复规则的东西,一定会在某个单元格出错,而且错了当场看不出来。
所以我给自己定的目标很具体:做一个同事双击就能用的小工具,导入 Excel、几十秒出结果,规则吃不下的行自动挑出来标黄,不要静默乱改。
.xlsx,字段大致为:所属分局、客户名称、联系人、联系电话、状态(实际 4—6 列,各分局略有差异)原始写法 | 实际含义 | 需要输出 |
|---|---|---|
023-8888 6666 | 带区号和分隔符 | 88886666 |
02388886666 | 带区号,无分隔 | 88886666 |
+862388886666 | 国际前缀格式 | 88886666 |
88886666转801 | 带分机号 | 主号 88886666,分机 801 单独一列 |
88886666 | 全角字符 | 88886666 |
8.88889E+10 | Excel 科学计数法 | 无法还原,标黄待人工确认 |
空值 / 位数不足 | 无效数据 | 保留原值,标黄 |
这里我刻意做得很「轻」,因为这不是一个需要连接外部服务的任务:
一个判断原则:任务越具体、边界越清楚,越不需要堆配置。反过来,如果一开始就把一堆专家和连接器挂上去,模型反而会去猜我要做什么。
我的第一句话是:
帮我写个程序,把 Excel 里的固定电话统一格式化一下。
它给了我一个通用清洗脚本,区号规则全错——把 8 位号码也当成需要补区号的号码,还擅自加了 023。这不是它笨,是我没说清规则。
改成把规则写成可验收的样例,一条输入对一条期望输出:
我要处理一列固话号码,规则如下,请严格按样例输出: 1.
02388886666→88886666(去掉 023 区号) 2.023-8888 6666→88886666(去掉区号和分隔符) 3.+862388886666→88886666(去掉 +86 和 023) 4.88886666转801→ 主号88886666,分机801单独输出一列 5. 空值或处理后不足 8 位 → 保留原值,标黄,不猜 请用 openpyxl 实现,输出到新文件,不要覆盖原表。
这一次就对了。一条输入配一条期望输出,胜过十句形容词,这是整个过程里最省时间的一条经验。
加了一条要求:
凡是匹配不上上述任何规则的行,不要修改,单独写进「待人工确认」表,并注明原因(位数不对 / 含非数字字符 / 疑似科学计数法)。
这一步的收益最大。原来的脚本会把看不懂的行「尽力改造」,改完是错的;加了这个约束之后,工具的行为变成:能确定的自动做,不确定的留给人。第一批三千条里挑出来 41 条待确认,人工看一遍 5 分钟。
接着补了校验项:
输出结构固定为三张表:结果表 + 异常表 + 汇总表(总数 / 成功 / 待确认 / 重复)。后来向领导汇报时,汇总表就是现成的口径。
我的同事不会用命令行。请加一个窗口:三个按钮——选择文件、开始处理、打开结果目录;处理完弹一句「处理完成,共 X 条,待确认 Y 条」。
它给了 tkinter 的三百来行代码,界面很朴素,但能用。中途踩的坑放在下一节。
用 pyinstaller 打成 exe,第一次出来四十多兆,同事电脑上的杀毒软件直接拦了。后来改成单文件模式,并配一份一页纸的说明文档(双击运行、不支持的文件格式、报错时把 log.txt 发我),才算真正交付出去。
缩位规则每月会微调(前缀保留几位、是否保留末四位),原来改一次规则要改代码。我让它把规则抽到同目录下的 config.json,现在改配置就行,不用碰代码。
现象 | 原因 | 处理 |
|---|---|---|
长号码变成 | Excel 打开时已按数值存储,精度已丢 | 无法还原,一律进待确认表;源头改为「文本格式」导入 |
全角数字匹配不上 | 字符集不同 | 先做半角转换再匹配 |
输出后前导 0 消失 | 写入单元格被当数值 | 输出目标列强制文本格式 |
打包后双击闪退 | 异常没被捕获,窗口直接关 | 全局 try/except,错误写入 log.txt |
杀毒软件报毒 | 单文件打包的常见误报 | 改单文件模式 + 说明文档,交由 IT 加白 |
项目 | 改造前 | 改造后 |
|---|---|---|
单批三千条耗时 | 约 4 小时 | 约 40 秒 |
待人工确认 | 全靠人工逐条看 | 平均 40 条左右,5 分钟看完 |
差错情况 | 抽查才能发现 | 校验项自动拦截 |
谁来做 | 集中在我这里 | 各分局自己就能跑 |
比省时间更值得说的是:这件事从「我一个人加班」变成了「每个分局自己十秒钟跑完」。规则沉淀进工具之后,人的注意力就可以只放在那 40 条待确认上。
我有一个 Excel,里面有一列电话号码,格式很乱。请帮我做一个 Windows 小工具: 1. 界面三个按钮:选择文件、开始处理、打开结果目录 2. 按以下规则清洗(规则见样例),不符合规则的不要改,单独输出到「待确认」表并注明原因 3. 输出三张表:结果、异常、汇总(总数/成功/待确认/重复) 4. 结果列必须是文本格式,保留前导 0 5. 出错时写日志文件,不要直接闪退 样例:(贴上你自己的 5 条真实数据,一条输入一条期望输出)
这个过程最像「和同事交代活」:说清规则、给个样例、告诉它能改什么不能改什么。剩下的事它可以自己跑完。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。