很多 Python 自动化需求看上去不同,拆开后却很相似:客户给一批 CSV 或 JSON 数据,希望改字段名、转换类型、补默认值、做校验,再输出一份干净文件。
真正麻烦的地方通常不是写出第一版脚本,而是规则经常变化。如果字段名、单位、阈值都写死在代码里,客户每调整一次格式,都要重新修改和部署。更稳妥的做法是把规则放到外部配置中,让核心程序只负责读取规则并执行。
我把这个思路做成了一份公开、可运行的最小样品:
- 源码与运行说明:https://github.com/jhhjwei/codex-runner/tree/main/demos/config-driven-parser
- 不依赖第三方库,Python 3 可直接运行
- 同时支持 CSV / JSON 输入、配置和输出
- 包含样例数据、预期结果与端到端测试
一、先把"会变的规则"从代码里拿出来
样品中的配置文件用一行描述一个字段规则:
csv
source,target,type,required,default,trim,case,multiplier,offset,min,max,choices
device_id,id,string,true,,true,upper,,,,,
temperature_c,temperature_f,float,true,,true,,1.8,32,-40,212,
status,status,string,true,unknown,true,lower,,,,,online|offline|unknown
这几行配置表达了三类常见需求:
device_id改名为id,去掉首尾空格并转成大写;- 摄氏温度乘以 1.8 再加 32,输出华氏温度;
- 状态为空时使用
unknown,并限制在指定枚举范围内。
这样做的价值不是少写几行代码,而是把"业务变化"变成"修改配置"。字段顺序、目标名称、默认值和阈值变化时,不需要碰核心处理逻辑。
二、把类型转换与数据校验放在同一条流水线
数据处理脚本最常见的问题,是转换成功了却没有验证结果。例如字符串 12.5 被强行转成整数,空值被默默写成 0,或者状态字段出现了未定义的新值。
样品把每个字段依次经过以下步骤:
text
读取原始值
-> 判断是否缺失
-> 应用默认值
-> 去除首尾空格
-> 类型转换
-> 大小写或数值换算
-> 最小值、最大值、枚举校验
-> 写入目标字段
当某一行出现问题时,程序不会只打印一句模糊的"转换失败",而是记录行号、字段和具体原因。合格数据进入输出文件,错误记录进入独立 JSON 文件,方便后续人工核验或二次处理。
三、用可重复测试证明"能运行"
展示代码时,只有截图和描述远远不够。一个可交付的小型自动化至少应包含:
| 证据 | 作用 |
|---|---|
| 输入样例 | 说明程序面对的数据结构 |
| 配置样例 | 说明哪些规则可调整 |
| 预期输出 | 明确正确结果是什么 |
| 自动测试 | 修改代码后快速判断是否破坏原功能 |
| README | 让没有参与开发的人也能运行 |
这个样品的测试会真正启动命令行程序,读取 CSV 配置和输入,再把实际输出与 expected.json 比较。运行方式如下:
bash
cd demos/config-driven-parser
python -m unittest -v
主流程也可以直接执行:
bash
python parser.py \
--config config.csv \
--input input.csv \
--output output.json \
--errors errors.json
成功时会输出:
text
processed=3 accepted=3 rejected=0
四、从免费样品扩展成真实交付
最小样品解决的是通用骨架,真实项目通常还会增加以下能力:
- 读取和生成 Excel 文件;
- 批量处理多个目录或压缩包;
- 日期、金额、单位和字段依赖规则;
- 图形界面或网页上传入口;
- 定时执行、结构化日志与失败重试;
- 打包成 Windows 可执行文件;
- 输出处理统计和异常报告。
报价前应先确认四件事:输入样例、期望输出、数据规模和验收标准。范围清晰的小任务,可以拆成一个 24--72 小时内可验证的固定交付;规则还没说清楚时,先做最小样例验证,比直接堆功能更省时间。
如果你手里也有重复处理 CSV、Excel 或 JSON 的工作,可以提交一份脱敏样例和期望结果,我会先免费判断是否适合自动化,再确认范围与价格:
https://github.com/jhhjwei/codex-runner/issues/new?template=code-fix-request.yml
请勿在公开链接中提交密码、Cookie、Token、私钥或真实个人数据。
📌 本文用配置驱动解析器展示了如何把 CSV 需求拆成可运行、可测试、可验收的自动化样品。
💬 你最想先处理 CSV、Excel 还是 JSON 中的哪类重复数据问题?
👉 关注《Python 自动化接单实战》,下一篇继续把同一套规则模型扩展到 Excel 批量清洗与异常报告。