中集深圳空运价格提取
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_17da570a/price-extract-cimc-shenzhen。
技能介绍
问题:深圳运价表的结构化提取难题
深圳空运价格表的原始格式常面临三重挑战:
- 多Sheet异构结构:包含17个Sheet,每个Sheet对应不同航空公司或转运类型(如O3鄂州始发、UPS专线),列布局和备注规则差异大。
- 合并单元格干扰:起始港、比重等关键信息常通过合并单元格跨行显示,直接读取会导致数据错位或缺失。
- 转运数据污染:部分Sheet混入转运辐射点价格,若未精准过滤,会错误提取非SZX始发数据,破坏运价链完整性。
传统脚本需为每个Sheet单独编写解析逻辑,维护成本高且易出错。
技能如何工作:从原始表格到标准化输出
严格输入隔离
- 每次仅处理用户最新提交的
.xls文件,通过glob.glob("中集(深圳)*.xls")匹配文件名(支持含\xa0非断空格的路径)。 - 强制禁止读取历史脚本中的
price/data数组或输出文件,确保数据新鲜度。
深圳特有的处理逻辑
- 合并单元格解析
- 使用xlrd的merged_cells属性直接获取合并区域,通过get_merged_value()函数区分合并后值与原始值,避免openpyxl的merge_map兼容性问题。
- 备注继承规则:合并区域的备注归属最后一行(比重最低行),需特殊处理remark_full = str(remark).replace('\n', ' ')。
- 转运数据过滤
- 严格检查row[1] == 'SZX'作为正常价格行标识,排除row[0]非SZX/PVG/CAN的转运行。
- 对空起始港行,通过row[2]和row[3]是否为数字判断是否为转运数据。
- 链式比重推导
- 内置chain_ratio()函数替代广州版的ratio_engine.py,仅在存在XXX标记时触发链式计算,否则输出独立行(0, 9999, cargo, ...)。
- 散托增量解析
- 仅从备注中提取+N模式(如卡板+2/KG、托盘+1/KG),无+N时增量为空,禁止使用Sheet级默认值。
- 优先级规则:卡板/托盘+N > 直达点+N > 快件+N,且N≤20(排除+100KG等权重阈值)。
标准化输出
- 输出24列标准结构,列名严格使用
转运费增量值(RMB/KG)和转运费最低收费(/票),禁止简写。 - 频次列空值自动填充
Daily,分泡列始终留空。
适用边界与关键限制
- 历史数据隔离:禁止从历史文件或脚本中复用数据,必须从用户当前提交文件全新读取。
- 散托增量规则:仅认可备注中显式的
+N,无+N时增量为空,禁止通过Sheet配置硬塞默认值(如CA=2)。 - 合并单元格处理:备注归属最后一行,需通过
row_raw和row双轨保留原始信息。 - 转运数据判别:必须严格检查
row[1] == 'SZX',避免误提取转运辐射点价格。 - A/B舱独立处理:A舱/B舱行(
has_cargo_type=True)使用自身散托类型和增量,不继承也不更新last_bulk_type/last_bulk_delta。 - 文件路径问题:支持含
\xa0的文件名,需通过Path.replace('\\xa0', ' ')或glob匹配。
使用场景
- 货代操作员拿到最新的中集深圳运价表,需要将其解析为标准24列数据并上传WPS,供销售团队报价使用,同时确保不混入历史数据。
- 数据分析员在处理深圳空运价格表时,发现部分Sheet混入了转运辐射点价格,需要工具自动过滤非SZX始发数据并正确推导链式比重。
- 运价专员面对包含A舱/B舱和卡板/托盘备注的复杂表格,需要批量提取散托增量并输出标准格式,避免手动填写错误。
适合人员
- 国际货代公司的运价维护专员,需要定期将中集深圳的原始运价表清洗并导入内部报价系统。
- 跨境电商物流主管,负责核对和提取深圳空运专线的最新价格表,以更新公司的价格参考库。
- 航空数据分析工程师,需要编写或配置脚本从多Sheet的.xls文件中批量提取结构化运价数据。