浏览 AI 使用教程
操作教程

Codex清洗CSV怎么做:先固定列口径,再处理空值和重复行

给 Codex 一份含前导零、空值、重复行和无效日期的 CSV,固定逐列规则,再用清洗结果、异常行与行数对账检验输出。

Codex项目开发与自动化工作流主视觉
本文目录 · 跳到当前步骤

编号能否去零、空白能否补“未知”、同一客户多行是否等于重复,都应在写程序前确定。下面完整给出输入和应有结果,可检验 Codex 生成的清洗程序。

原文件有七行记录

保存为 UTF-8 的 customers.csv,用文本编辑器查看,不先让表格软件自动转换编号。

csv
customer_id,name,city,joined_at
00123,林甲,上海,2026/09/01
00124,周乙,,2026-09-02
00125,钱丙,未知,2026/09/03
00123,林甲,上海,2026/09/01
00126,"吴,丁",杭州,2026-02-30
00127,郑戊, 宁波 ,2026-09-04
,王己,北京,2026-09-05

姓名中的逗号被引号包住,不能用 split(",") 解析。下文行号包含第 1 行表头;本例没有带换行的引号字段,真实文件若有,应另记逻辑记录号。

规则先于结果

列或情况 本练习规则 禁止推断
customer_id 必填,保持原文本与前导零 不转数字,不补造编号
name 保留原值,CSV 引号只是编码 不把姓名逗号拆成两列
city 去两端空白;空仍为空,“未知”仍是字面值 不用“未知”填空
joined_at 只接受 YYYY/MM/DD 或 YYYY-MM-DD,校验真实日期,统一连字符 不把 2 月 30 日滚到 3 月
完全重复 四列原始解析值全相同,保留首次 同编号不同资料不能直接去重
异常行 缺编号、非法日期隔离,不进 clean.csv 不悄悄修成最接近值

先按“原始字段相等”去重,再验证、归一化保留记录。按清洗后值去重是另一个口径,不能暗中切换。

给 Codex 的任务

text
读取 customers.csv,按本文规则写 clean_customers.py,使用 Python 标准库 csv 和 datetime。
生成 clean.csv、duplicates.csv、exceptions.csv、summary.json;不覆盖输入。
说明运行目录和编码。输出目录若已存在,报错要求换新目录,避免盖住旧结果。
duplicates 记录 source_line、first_line、原字段;exceptions 记录 source_line、reason、原字段。
错误日期必须拒绝,编号始终是字符串;使用标准 CSV writer 处理引号和逗号。
先展示规则对应的分支,再运行练习。环境没有 Python 则记“未执行”,不要填成功日志。

本文提供协作规格与预期工件;程序由 Codex 在你的环境生成并执行。不能只接受一句“清洗成功”。

应得到四行

clean.csv:

csv
customer_id,name,city,joined_at
00123,林甲,上海,2026-09-01
00124,周乙,,2026-09-02
00125,钱丙,未知,2026-09-03
00127,郑戊,宁波,2026-09-04
分类 原行 原因或关联 保留信息
duplicate 5 完全重复第 2 行 00123、原斜杠日期
exception 6 invalid_date 00126、吴,丁、2026-02-30
exception 8 missing_customer_id 空编号、王己

summary.json 应有 input_rows=7、clean_rows=4、duplicate_rows=1、exception_rows=2,即 7=4+1+2。字段变更另计:第 2/4 行日期格式各一次,第 7 行城市空格一次;三次字段变更不等于删除三行。

还要检查 00123 的文本、空 city 与“未知”的区别,异常表“吴,丁”仍是一格。Excel 双击打开显示 123 时,先查原 CSV 文本,再按文本列导入,不能直接认定清洗程序丢零。下一步可看按唯一键核对 Excel。

下一步

继续阅读与你当前问题相关的教程: