补全:从 JSON 里取嵌套的值
补全 load_cfg,读出门店配置;再补全两处取值:北门的员工数、商品清单的长度。
补全:两份数据对上号
销售记录里的门店名,应该都在配置的 stores 里——但这份配置只登记了两家。补全 unknown_stores:找出记录里出现、配置里没有的门店。输出记录里不同门店的个数、「配置里没有的」个数、以及两边都认的门店数。
先做哪一步
这份记录里有四种脏:数值两边带空格、空格子、整行重复、写成英文的数量。清洗时最该先做的是【0】。
空格子该怎么办
同一列里,四种脏 正常 带空格 空着 正常 重复 写成字 「西门,油条」那一行的数量是空的。把它当成 0 还是整行跳过,判断依据是【0】。
重复行怎么认
同一列里,四种脏 正常 带空格 空着 正常 重复 写成字 「2026-09-01,东门,包子,10,2」出现了两次。判断两行是不是重复,稳妥的做法是【0】。
去空白之后变了几个格子
对每个格子做 strip()。运行程序,看有几个格子因此变了: import csv, io SALES = ("date,store,item,qty,price\n2026-09-01,东门,包子,10,2\n2026-09
哪些数量转不成整数
对每行的数量做 int(),转不了的记下行号(表头算第 1 行)。运行程序: import csv, io SALES = ("date,store,item,qty,price\n2026-09-01,东门,包子,10,2\n
补全:去空白,空数量当 0
补全 normalize:每个格子 strip;数量为空就填成 "0"。输出处理后第 2 条和第 3 条的数量。
补全:去掉重复的整行
补全 dedupe:整行相同只保留第一次出现的。输出去重前后的条数。
补全:把类型转好,转不了的记下来
补全 typed:qty 转 int、price 转 float;转不了的整条跳过并把行号记进 bad。输出转好的条数和坏行号。