Install
openclaw skills install @thcjp/csv-handler-freeopenclaw skills install @thcjp/csv-handler-free功能说明: 本技能涵盖 基础合并与导出、中文交互、编码与分隔符 等核心能力。
CSV是工程与财务领域最通用的数据交换格式。本免费版提供基础的CSV读取、编码检测与数据清洗能力,满足日常单文件处理需求。
通过 chardet.detect() 读取文件前 10000 字节进行编码推断,支持以下编码:
utf-8:标准Unicode编码utf-8-sig:带BOM头的UTF-8(Excel导出常见)latin-1:西欧语言编码检测失败时回退至 utf-8,避免抛出 UnicodeDecodeError。
读取文件前 5000 字符,统计 COMMON_DELIMITERS = [',', ';', '\t', '|'] 各分隔符出现频次,选取频次最高者作为分隔符。
调用 profile_csv() 生成 CSVProfile 对象,包含 encoding、delimiter、has_header、row_count、column_count、columns 字段。表头判定逻辑:检查首列是否为纯数字(去除 . 和 -),若非数字则判定有表头。
read_csv() 方法封装 pd.read_csv(),默认参数 on_bad_lines='skip'、low_memory=False。清洗流程包括列名标准化(转小写、空格转下划线)、删除全空行 df.dropna(how='all')、字符串列空白裁剪。
export_csv() 默认使用 utf-8-sig 编码导出(带BOM,确保Excel正确显示中文),index=False 不写入行索引。
升级提示:多文件合并(
merge_csvs)、按列拆分(split_csv)、智能类型转换(convert_types)、进度计划专用解析(ScheduleCSVHandler)、成本数据专用解析(CostCSVHandler)为付费版专享功能。
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
需要配置对应API Key,详见上文环境配置章节
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统。
profile_csv("export.csv") 获取文件编码、分隔符、行列数read_csv("export.csv", clean=True) 加载并自动清洗数据export_csv(df, "output.csv") 以 utf-8-sig 编码写出handler = ConstructionCSVHandler()
profile = handler.profile_csv("p6_export.csv")
# 输出: Encoding: utf-8-sig, Delimiter: ',', Rows: 1542, Cols: 7
df = handler.read_csv("p6_export.csv")
print(f"加载 {len(df)} 行, {len(df.columns)} 列")
# 输出: 加载 1542 行, 7 列
handler.export_csv(df, "cleaned_output.csv", encoding='utf-8-sig')
# 生成带BOM的UTF-8文件,Excel可正确显示中文
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
UnicodeDecodeError | 文件包含非声明编码字符 | 使用 errors='replace' 替换非法字符,或手动指定 latin-1 编码 |
| BOM残留导致列名首字符异常 | utf-8 读取带BOM文件 | 改用 utf-8-sig 编码读取,BOM会被自动移除 |
ParserError: Error tokenizing data | 行内字段数不一致 | 已通过 on_bad_lines='skip' 自动跳过,检查原始文件引号配对 |
| 分隔符误判 | 文件内逗号出现在文本字段中 | 手动指定 delimiter='\t' |
MemoryError 大文件溢出 | 文件超过可用内存 | 使用 nrows 分批读取或 chunksize=10000 流式处理 |
A: 导出时使用 utf-8-sig 编码(export_csv(df, "output.csv", encoding='utf-8-sig')),BOM头会让Excel正确识别UTF-8编码。
A: profile_csv() 返回的 has_header 字段会自动判定——检查首列是否为纯数字,非数字则判定有表头。
A: detect_delimiter() 会自动识别分号。也可手动指定:handler.read_csv("data.csv", delimiter=';')。
A: 多文件合并为付费版专享功能。免费版建议手动使用 pd.concat() 处理少量文件,或升级至付费版使用 merge_csvs() 一键合并。
$ 符号如何处理?A: 成本数据专用解析(CostCSVHandler)为付费版专享。免费版可手动执行 df['col'].replace(r'[\$,]', '', regex=True) 清洗。
on_bad_lines='skip' 会静默丢弃格式错误行,建议检查丢弃行数| 风险类型 | 防范措施 |
|---|---|
| API密钥泄露 | 通过环境变量配置,禁止硬编码到代码或配置文件中 |
| 命令执行风险 | 仅执行白名单命令,避免拼接用户输入到命令行参数中 |
| 敏感数据暴露 | 输出结果中不包含密钥、令牌等敏感信息 |
使用前请确认已阅读依赖说明章节,确保运行环境满足安全要求。
| 操作场景 | 手动耗时 | 自动化耗时 | 效率提升 |
|---|---|---|---|
| 文件解析与提取 | 5-10分钟/个 | <5秒/个 | 60-120x |
| 批量文件处理(100个) | 8-16小时 | <5分钟 | 96-192x |
| API调用与响应解析 | 2-3分钟/次 | <1秒/次 | 120-180x |
| 多接口数据聚合 | 15-30分钟 | <10秒 | 90-180x |
| 命令执行与结果收集 | 3-5分钟/次 | <2秒/次 | 90-150x |
| 重复任务批量执行 | 因任务而异 | 线性缩减 | 5-50x |
| 错误排查与修复 | 10-30分钟 | <30秒 | 20-60x |
| 对比维度 | 本技能 | 传统手动方式 | 通用脚本工具 |
|---|---|---|---|
| 自动化程度 | 全流程自动 | 完全手动 | 部分自动 |
| 错误处理 | 内置错误恢复 | 依赖人工经验 | 基本try-catch |
| 可复用性 | 参数化配置 | 一次性脚本 | 模板化 |
| 安全合规 | 内置安全检查 | 无安全保障 | 无安全保障 |
| 适用场景 | 核心功能 | 通用场景 | 通用场景 |