最终成果:从带标签的文本提取编号与整数金额,缺项和冲突留给人工核对。
这是一门可离线完成的Python实践课,使用标准库,不需要模型密钥。例子均为教学虚构,不是现实业务数据或真实效果证据。
1. 先看成果
输入示例:
{
"records": [
"编号:A1;金额:80"
]
}
预期输出:
{
"rows": [
{
"id": "A1",
"amount": 80,
"needs_review": false
}
]
}
2. 准备与首次运行
准备Python 3.10或更高版本。完整解压项目包,在包含verify.py的文件夹打开终端。Windows可用py -3代替python,macOS/Linux可用python3。
python --version
python verify.py
起始代码尚未实现,首次看到7项FAIL和NotImplementedError属于正常起点;语法或导入错误会给中文说明且不生成报告。先提交这份失败报告也可以。
3. 输入输出契约
输入 records 是最多100个字符串的列表,每条最多2000字符。按分号分段,标签为 编号: 与 金额:,中英文冒号均可,去除标签和值两端空白;忽略其他标签。编号非空,金额须为ASCII非负整数字符串。同一已知标签出现多次即冲突。每条输出 id、amount、needs_review;缺失/非法/冲突字段为null,只要有null就needs_review=true。rows保留输入顺序。非法列表或非字符串记录抛ValueError。
solve(payload)接收一个JSON对象并返回上述JSON结果。任何契约规定的结构或类型错误都应抛ValueError,不返回貌似成功的部分结果。
4. 三段实现与分层提示
1. 识别字段边界
先解析分号和两种冒号,保留原始字段列表。
关注用例:normal、spaces、empty
-
第1层:冒号后面的内容应拆几次?
-
第2层:统一冒号后按第一个冒号分隔,标签和值分别去空白。
-
第3层:逐条记录分段,先收集标签和值,不急着转金额。
2. 未知与冲突留痕
处理缺金额、非法金额和重复编号。
关注用例:missing、invalid、conflict
-
第1层:没有金额时能否填0?
-
第2层:未知用null;重复已知标签视为冲突,不能随意选最后一个。
-
第3层:按标签收集全部值,只在恰好一个合法值时赋值。
3. 交付可复核结果
组合多条记录,检查顺序和人工核对标志。
关注用例:batch
-
第1层:某条坏数据是否影响下一条?
-
第2层:记录级问题留在needs_review,结构错误才拒绝整份输入。
-
第3层:先构造每条结果,最后按输入顺序放入rows。
先写下自己的预期,再展开一层提示并修改。verify.py默认展示字段差异,仍卡住可加--explain查看诊断。
5. 用本地网页检查自己的输入
python run.py
打开终端显示的本地地址(默认http://127.0.0.1:8870),修改输入并运行,保存输出。端口已占用可运行python run.py --port 8871;不需要停止其他程序。
参考演示可运行python run.py --reference,参考输出不表示你自己的实现通过。
6. 组合挑战与评分
python verify.py --suite challenge --report challenge-report.json
4项挑战各25分,输入、错误类型及所有输出字段符合约定才得该项分数。完整用例与评分依据在project.json的learning.cases中。只表示这组输出符合约定,不证明独立能力。
-
未知标签不干扰:忽略未知标签并正确转换金额。
-
同值重复也待审:即使相同金额,重复标签仍是冲突。
-
负数不能作为金额:负数非法,保留人工核对状态。
-
拒绝非文本记录:结构非法须抛ValueError,不能当作空单据。
7. 自主扩展与提交
增加原文定位字段,选择一条有冲突的单据,保存修改前后结果;说明如何让审核者返回原文。
至少自建一个测试,先写预期,再运行并保存实际结果。在项目页上传报告,填写两道解释题,展开自主扩展记录,填写需求、JSON输入/预期/实际及修订说明。扩展内容不自动算分,申请人工评价后由人核对。
-
解释题:选择重复字段案例,解释为何不能直接取最后一个金额。
-
解释题:自建一条缺项或冲突记录,写出输入、预期、实际和你的修订。
报告默认私有;申请后管理员才可看该次报告、项目链接、复盘与扩展证据,可撤回共享。服务器复核报告输出,不执行上传代码、不访问作品链接。修订时保留失败与新报告,不覆盖旧记录。
8. 局限与后续
本项目训练上述确定性规则,不调用模型,不代表完整业务系统。如需以后接入模型,先保留基线,单独明确成本与调用授权、构造错误输出并人工核对,不把本站参考结果当作模型效果。