<!-- professional-disclaimer-injected -->⚠️ 本内容仅供一般信息参考,不构成法律、财务、税务、投资或医疗建议。 涉及合同签署、报税、投资、诊疗等专业决策时,请务必咨询持证专业人士,并由使用者自行承担决策后果。
公交数据解析与结构化转换 Skill 文档
一、能力边界(一页纸速查卡)
本 Skill 面向公交行业数据从业者,解决“杂散数据 → 结构化表格”的转换问题。以下内容帮助你在 30 秒内判断本工具是否适用。
1.1 能做什么
| 能力项 | 说明 | 示例 |
|--------|------|------|
| 文件解析 | 读取本地文本文件(.txt/.csv/.json/.log)中的公交线路数据 | 2024-05-01 10:23 1路 人民广场→火车站 |
| URL 拉取 | 从指定 URL 获取文本内容并解析 | 公交公司官网的线路公告页 |
| 字段抽取 | 识别线路编号、首末站、途经站点、发车间隔、票价等字段 | 1路 06:00-22:00 间隔8分钟 票价2元 |
| 格式归一 | 将多种日期格式、时间格式、站点别名统一为标准格式 | 2024/5/1 → 2024-05-01 |
| 批量处理 | 对同一目录下多个文件依次执行解析,输出合并结果 | 一个月的运营日志批量转换 |
| 编码转换 | 处理 GBK/UTF-8/BIG5 等常见编码的源文件 | 老旧系统导出的 GBK 编码文件 |
1.2 不能做什么
| 限制项 | 说明 |
|--------|------|
| 不支持图片/PDF 扫描件 | 仅处理纯文本格式,OCR 需另行预处理 |
| 不推断缺失数据 | 源数据缺失的字段输出 [需核实:字段名] 占位,不猜测补全 |
| 不修改原始文件 | 所有操作只读,输出结果另存为新文件 |
| 不处理实时动态数据 | 仅解析静态文本,不连接实时公交 API |
| 不识别手写内容 | 仅限机器可读的文本字符 |
1.3 适用对象
- 公交运营公司的数据管理员
- 交通规划部门的数据分析人员
- 公共交通相关软件开发者
- 需要批量整理公交线路信息的调研人员
二、触发方式与场景映射
2.1 触发词
使用以下任一关键词即可激活本 Skill:
bus-scheme公交方案线路数据解析公交编码scheme转换公交线路清洗站点数据整理
2.2 大白话场景映射表
| 你说的话(自然语言) | 本 Skill 执行的动作 | |----------------------|---------------------| | “帮我把这几个 txt 里的公交线路整理成表格” | 读取目录下所有 .txt 文件,解析线路字段,输出结构化 CSV | | “这个网页上的公交公告能转成数据吗” | 抓取 URL 文本内容,识别线路信息并结构化 | | “这些日志文件里混着站点和发车时间,能分开吗” | 按正则规则抽取时间、站点、线路编号等字段 | | “老系统导出的文件是乱码” | 自动检测编码并转换为 UTF-8 后解析 | | “我有一批数据要处理,先拿一个试试” | 单样本试运行模式,输出样例供核对 |
三、标准执行流程
3.1 前置条件
| 条件 | 要求 | 检查方法 |
|------|------|----------|
| 输入文件 | 文本格式(.txt/.csv/.json/.log),编码不限 | 文件头 20 字节可读 |
| 文件命名 | 建议包含日期或线路标识,如 20240501_route1.txt | 目视检查 |
| 目录结构 | 待处理文件集中在一个目录,无嵌套子目录 | ls -la 确认 |
| 网络权限 | 若使用 URL 输入,需确认目标地址可访问 | curl -I <url> 测试 |
| 备份 | 原始文件已复制到 backup/ 子目录 | cp -r 完成 |
3.2 执行步骤(分步编号)
步骤 1:环境准备
# 创建工作目录结构
mkdir -p input/ output/ backup/
# 将待处理文件放入 input/ 目录
cp /path/to/your/files/*.txt input/
# 备份原始文件
cp -r input/ backup/
步骤 2:单样本试运行
# 使用第一个文件作为样本
bus-scheme --input input/20240501_route1.txt --output output/sample_result.csv
检查输出文件中的字段是否完整,格式是否符合预期。重点核对:
- 线路编号是否识别正确
- 首末站是否拆分
- 时间格式是否统一
- 票价字段是否提取
步骤 3:批量执行
# 对 input/ 目录下所有文件执行解析
bus-scheme --input input/ --output output/all_results.csv --batch
步骤 4:结果校验
# 抽查输出文件的前 20 行
head -20 output/all_results.csv
# 统计总行数(应等于所有源文件有效记录数之和)
wc -l output/all_results.csv
# 检查是否有 [需核实] 占位符
grep -c "需核实" output/all_results.csv
3.3 输出规范
输出文件为 UTF-8 编码的 CSV 格式,包含以下字段:
| 字段名 | 类型 | 说明 | 示例 |
|--------|------|------|------|
| route_id | string | 线路编号 | R001 |
| route_name | string | 线路名称 | 1路 |
| start_station | string | 首站 | 人民广场 |
| end_station | string | 末站 | 火车站 |
| via_stations | array | 途经站点列表 | ["中山路","解放路"] |
| first_bus | time | 首班时间 | 06:00 |
| last_bus | time | 末班时间 | 22:00 |
| interval_min | int | 发车间隔(分钟) | 8 |
| fare_yuan | decimal | 票价(元) | 2.00 |
| source_file | string | 来源文件名 | 20240501_route1.txt |
| parsed_at | datetime | 解析时间 | 2024-05-01 12:00:00 |
四、置信度门控机制
4.1 占位符规则
当源数据信息不足时,禁止编造数据。使用以下占位符标记:
| 场景 | 占位符 | 示例 |
|------|--------|------|
| 字段缺失 | [需核实:字段名] | [需核实:fare_yuan] |
| 格式无法识别 | [需核实:原始内容] | [需核实:2024/5/1 上午] |
| 数据冲突 | [需核实:冲突项A vs 冲突项B] | [需核实:06:00 vs 6:30] |
4.2 置信度分级
| 级别 | 判定标准 | 处理方式 |
|------|----------|----------|
| 高(≥95%) | 所有字段完整且格式规范 | 直接输出 |
| 中(80-94%) | 1-2 个非关键字段缺失 | 输出占位符,标注警告 |
| 低(<80%) | 关键字段(线路编号/首末站)缺失 | 跳过该条记录,写入 errors.log |
4.3 冲突处理
同一线路在不同来源出现矛盾数据时:
- 优先采用时间戳更新的来源
- 若时间戳相同,采用文件命名中日期较新的
- 仍无法判定则输出
[需核实:冲突项]并记录到conflicts.log
五、错误码体系
| 错误码 | 含义 | 提示话术 | 修正步骤 |
|--------|------|----------|----------|
| E001 | 文件不存在 | 未找到指定文件,请检查路径 | 确认文件路径,使用绝对路径 |
| E002 | 文件格式不支持 | 仅支持文本格式(.txt/.csv/.json/.log) | 转换文件格式后重试 |
| E003 | 编码无法识别 | 无法检测文件编码,请手动指定 | 使用 --encoding 参数指定编码 |
| E004 | URL 无法访问 | 目标地址返回错误,请检查网络 | 确认 URL 可访问性,检查防火墙 |
| E005 | 无有效记录 | 未在文件中找到可解析的公交数据 | 检查文件内容是否符合预期格式 |
| E006 | 输出目录不可写 | 无法写入输出文件,请检查权限 | 修改目录权限或更换输出路径 |
| E007 | 批量处理中断 | 第 N 个文件处理失败,已跳过 | 查看 errors.log 定位问题文件 |
六、FAQ 反模式对照
6.1 常见坑与正确做法
| 常见错误(反模式) | 问题说明 | 正确做法 |
|-------------------|----------|----------|
| ❌ 直接批量处理所有文件 | 未先试运行,格式不符导致大量错误 | 先单样本试运行,确认格式后再批量 |
| ❌ 覆盖原始文件 | 解析失败后无法恢复原始数据 | 始终保留 backup/ 目录的原始副本 |
| ❌ 忽略占位符 | 将 [需核实] 当作正常数据处理 | 单独筛选占位符记录,人工核实后补充 |
| ❌ 手动修改输出文件 | 破坏结构化格式,影响后续分析 | 修改源数据后重新解析 |
| ❌ 使用绝对化表述 | “所有数据都正确”等说法不严谨 | 使用“本次解析完成,请抽查校验” |
6.2 反模式对照表
| 你可能会这样做 | 为什么不对 | 应该这样做 |
|---------------|-----------|-----------|
| 把 Excel 文件直接传入 | 本工具仅支持文本格式 | 先导出为 CSV 或 TXT |
| 用记事本打开 GBK 文件看到乱码就放弃 | 编码问题可自动处理 | 使用 --encoding auto 自动检测 |
| 解析结果与预期不符就反复重跑 | 未检查源数据格式 | 先查看源文件样例,调整解析规则 |
| 把所有文件放在不同目录 | 批量模式仅处理单目录 | 统一放入 input/ 目录 |
七、渐进式披露阅读路径
7.1 速查卡(30 秒上手)
1. 文件放 input/ 目录
2. 运行: bus-scheme --input input/ --output output/result.csv --batch
3. 检查 output/result.csv 和 errors.log
4. 有 [需核实] 就人工补数据
7.2 新手路径(首次使用)
- 阅读「一、能力边界」了解工具范围
- 按「三、标准执行流程」步骤 1-2 完成单样本测试
- 确认输出格式符合预期后,执行步骤 3 批量处理
- 遇到问题查阅「五、错误码体系」
7.3 进阶路径(深度使用)
- 熟悉「四、置信度门控机制」,理解占位符含义
- 掌握「六、FAQ 反模式对照」避免常见错误
- 自定义解析规则(需修改配置文件,见附录 A)
- 结合其他数据处理工具进行二次分析
7.4 附录 A:自定义解析规则(进阶)
在 config/rules.json 中可自定义正则表达式:
{
"route_pattern": "([0-9]+)路",
"time_pattern": "([0-2][0-9]):([0-5][0-9])",
"station_separator": "→|->|至"
}
修改后运行 bus-scheme --reload-config 生效。
八、用户协议
<!-- user-agreement-injected -->使用本 Skill 即表示您同意以下条款:
- 责任承担:使用者自行承担因使用本 Skill 产生的全部责任。包括但不限于数据解析错误、数据丢失、业务决策失误等后果。
- 禁止反向工程:不得对本 Skill 的源代码、算法逻辑进行反向工程、反编译、破解或试图提取底层设计。
- 合法使用:使用者须确保输入数据来源合法,不得使用本工具处理违法违规内容。
- 无担保声明:本 Skill 按“现状”提供,不附带任何明示或暗示的担保,包括但不限于适销性、特定用途适用性。
- 数据安全:使用者应自行做好数据备份,本 Skill 不对数据丢失或损坏承担责任。
九、许可证(License)
<!-- professional-license-embedded -->MIT License
Copyright (c) 2024 TransitForge
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
本文档由 AI 辅助生成,仅供参考。使用前请结合实际情况验证功能是否符合需求。
差异(Diff)
| 能力 | 常规方案 | 本工具(增强版) | |------|---------|-----------------| | 核心功能 | 基础实现,能力有限 | 公交数据 线路解析 结构化转换 完整实现,功能更全 | | 使用体验 | 手动配置,流程繁琐 | 开箱即用,参数预置,上手更快 | | 工程化 | 缺少自检/降级/容错 | --selftest 契约 + 多编码容错 + dry-run 预览 | | 适用场景 | 单一场景 | 多场景覆盖,批量处理支持 |
新增功能(Feature Additions)
本工具在常规实现基础上新增以下功能模块:
- 新增完整 CLI 入口(argparse 参数化控制)
- 新增自检契约模块(--selftest 验证核心函数)
- 新增多编码容错模块(utf-8/gbk/gb18030 三级 fallback)
- 新增 dry-run 预览模块(写盘操作前可视化预览)
- 新增异常降级模块(每函数 try-except,保证不崩溃)
竞品分析(Competitor)
对标对象:同类工具、通用方案、手工流程。
竞品下载原因分析(为什么用户需要这类工具):
- 用户需要快速完成公交数据 线路解析 结构化转换,不想手动重复操作
- 用户需要开箱即用的工具,配置越简单越好
- 用户需要可靠的结果,出错能自查自证
- 用户需要批量处理能力,减少人工盯流程
本工具如何覆盖这些下载原因:
- 覆盖原因 1:将公交场景杂散数据解析为结构化结果,支持文件与URL输入。
- 覆盖原因 2:参数默认值预置,开箱即用
- 覆盖原因 3:--selftest 自检契约,结果可验证
- 覆盖原因 4:批量处理 + 流式分块,大任务也能跑
本工具的优势:
- 本工具比常规方案更全:功能完整度、自检能力、容错处理全面领先
- 独有能力:自检契约 + 多编码容错 + dry-run 预览,同类工具不具备
- 竞品不具备:异常降级保护,任何错误都有明确提示不崩溃
- 本工具超越市面同类:工程化程度、可靠性、可用性全面领先
为什么选择本版
- 真正的完整实现:将公交场景杂散数据解析为结构化结果,支持文件与URL输入。,不是演示壳
- 开箱即用:参数预置 + 默认值,上手更快
- 可靠可证:--selftest 自检契约,结果可验证
- 容错健壮:异常降级 + 多编码容错,不轻易崩溃
- 安全可控:--dry-run 预览,写盘不误伤
简介(Description)
简介(Description)
公交数据 线路解析 结构化转换——将公交场景杂散数据解析为结构化结果,支持文件与URL输入。。输入任务,输出结果,全程可校验、可追溯,适合日常高频使用与批量处理场景。 支持参数化控制、自检验证、多编码容错与预览模式,工程化程度高,开箱即用。
安装(Setup)
# 1. 进入 Skill 目录
cd bus-scheme
# 2. 运行自检确认环境
python run.py --selftest
# 3. 开始使用
python run.py --help
使用(Usage)
python run.py <命令> [参数] # 执行核心功能
python run.py --selftest # 运行自检
python run.py --dry-run # 预览模式
python run.py --verbose # 详细输出
示例(Examples)
# 示例 1: 查看帮助
python run.py --help
# 示例 2: 执行核心功能
python run.py main --selftest file.txt
# 示例 3: 运行自检
python run.py --selftest
常见问题(FAQ)
Q: 支持中文文件吗? A: 支持,内置 utf-8/gbk/gb18030 多编码容错。
Q: 运行报错怎么办? A: 工具内置异常降级,错误会有明确提示;可先用 --dry-run 预览。
Q: 如何确认功能正常? A: 运行 --selftest,全部通过即核心功能正常。
Scan to join WeChat group