Install
openclaw skills install @thcjp/csv-processor-freeopenclaw skills install @thcjp/csv-processor-free面向数据工程师的 CSV 清洗与预处理工具,自动检测编码与分隔符,提供读取、清洗、合并、拆分与类型转换的完整能力。
CSV 是行业软件(建筑、ERP、财务等)数据交换的通用格式,但不同软件导出的 CSV 在编码、分隔符、列名规范上差异巨大。CSV Processor 解决"拿到一份陌生 CSV 如何快速清洗为可用数据"的问题。
免费版覆盖个人数据工程师 90% 的日常需求:编码检测、分隔符嗅探、列名规范化、空值清理、类型转换、多文件合并、按列拆分。
| 能力域 | 方法 | 说明 | 免费版覆盖 |
|---|---|---|---|
| 编码检测 | detect_encoding | 自动识别文件编码 | 是 |
| 分隔符嗅探 | detect_delimiter | 自动识别分隔符 | 是 |
| 文件画像 | profile_csv | 输出编码/分隔符/行数/列数 | 是 |
| 读取清洗 | read_csv | 自动检测 + 清洗 | 是 |
| 列名规范 | _clean_column_name | 小写下划线格式 | 是 |
| 空值清理 | clean_dataframe | 删除空行空列、去除空白 | 是 |
| 类型转换 | convert_types | 自动数值/日期转换 | 是 |
| 多文件合并 | merge_csvs | 行拼接或键合并 | 是 |
| 按列拆分 | split_csv | 按列值拆分 | 是 |
| 导出 | export_csv | 带 BOM 的 UTF-8 | 是 |
| 流式处理 | - | 大文件分块 | 否(专业版) |
| 自定义规则 | - | 清洗规则配置 | 否(专业版) |
| 数据校验 | - | Schema 校验 | 否(专业版) |
用input_params参数进行配置。
输入: 用户提供核心功能执行所需的指令和必要参数。 处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志。
input_params参数,支持创建/查询/导出操作用config_options参数进行配置。
输入: 用户提供参数配置与调用所需的指令和必要参数。 处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志。
config_options参数,支持修改/重置/导入操作用output_format参数进行配置。
输入: 用户提供结果处理与输出所需的指令和必要参数。 处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志。
output_format参数,支持导出/保存/转换操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:自动检测编码与分、隔符的、清洗工具、支持读取、合并与类型转换、Processor、是面向数据工程师、清洗与预处理工具、自动检测文件编码、与分隔符、提供读取、拆分与类型转换能、核心能力、编码自动检测、chardet、分隔符自动嗅探、制表符、列名规范化、空行空列清理、智能类型转换、导出带等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。P6 进度计划软件导出的 CSV 使用 cp1252 编码、分号分隔、列名含空格与特殊字符。直接读取会乱码或解析错位。使用 CSV Processor 自动检测编码与分隔符,清洗后输出标准 UTF-8 CSV。
需要将 1-12 月的 ERP 导出 CSV 合并为年度汇总。各月 CSV 列一致,使用 merge_csvs 按行拼接,并自动添加来源文件标记。
全国销售数据 CSV 需要按地区拆分后分发给各地负责人。使用 split_csv 按 region 列的唯一值拆分,自动生成 region_华北.csv、region_华东.csv 等子文件。
收到的 CSV 文件在 Excel 中打开是乱码。使用 detect_encoding 识别实际编码(可能是 Latin-1),再用正确编码读取并导出为 UTF-8。
上游 CSV 的列名是 "Order ID"、"Customer Name"、"Total Amount",含空格与大写。使用 _clean_column_name 规范化为 order_id、customer_name、total_amount,便于后续 SQL 查询。
以下场景CSV处理器 免费版不适合处理:
需要数据分析、报表生成、统计洞察、数据可视化时使用。不适用于非本工具能力范围的需求。
pip install pandas chardet
from csv_processor import ConstructionCSVHandler
# ...
handler = ConstructionCSVHandler()
profile = handler.profile_csv("export.csv")
print(f"编码: {profile.encoding}, 分隔符: '{profile.delimiter}'")
from csv_processor import ConstructionCSVHandler
# ...
handler = ConstructionCSVHandler()
# ...
# 1. 先看文件画像
profile = handler.profile_csv("export.csv")
print(f"编码: {profile.encoding}")
print(f"分隔符: '{profile.delimiter}'")
print(f"是否有表头: {profile.has_header}")
print(f"行数: {profile.row_count}, 列数: {profile.column_count}")
print(f"列名: {profile.columns}")
# ...
# 2. 读取并清洗
df = handler.read_csv("export.csv")
print(f"加载 {len(df)} 行, {len(df.columns)} 列")
# 按行拼接(列一致时)
files = ["jan_export.csv", "feb_export.csv", "mar_export.csv"]
merged = handler.merge_csvs(files)
print(f"合并后 {len(merged)} 行")
# ...
# 按键合并(类似 SQL JOIN)
merged = handler.merge_csvs(
["orders.csv", "customers.csv"],
on_column="customer_id"
)
# 按地区拆分
df = handler.read_csv("national.csv")
files = handler.split_csv(df, group_column="region", output_dir="./regions/")
print(f"拆分为 {len(files)} 个文件: {files}")
df = handler.read_csv("data.csv")
# ...
# 自动类型转换(尝试数值与日期)
df = handler.convert_types(df)
# ...
# 手动指定类型
df = handler.convert_types(df, type_map={
"order_id": "str", # 强制为字符串(保留前导零)
"amount": "float",
"quantity": "int",
"created_at": "datetime"
})
# 导出为带 BOM 的 UTF-8(Excel 友好)
handler.export_csv(df, "cleaned.csv", encoding="utf-8-sig", delimiter=",")
# ...
# 导出为分号分隔(欧洲 Excel)
handler.export_csv(df, "european.csv", encoding="utf-8-sig", delimiter=";")
拿到陌生 CSV 时,先用 profile_csv 查看编码、分隔符、行数、列数,确认无误后再读取处理。避免因编码或分隔符错误导致数据错位。
read_csv 默认启用清洗(clean=True),会自动规范列名。如需保留原始列名,设置 clean=False。
convert_types 不传 type_map 时会自动尝试数值与日期转换。自动转换后再手动修正误判的列(如身份证号被识别为整数)。
merge_csvs 按行拼接时要求列完全一致。合并前建议先 profile_csv 检查各文件列差异,不一致时先对齐。
按列值拆分时,该列的唯一值数量决定生成文件数。高基数列(如用户 ID)会生成大量小文件,建议按低基数列(如地区、类目)拆分。
utf-8-sig)utf-8)免费版将文件全量加载到内存,建议处理 100MB 以内的文件。超过 100MB 请使用专业版的流式处理。
chardet 基于样本检测,可能误判。可通过 detect_encoding 查看置信度,低置信度时手动指定编码:read_csv("data.csv", encoding="utf-8")。
嗅探基于前 5000 字符的分隔符频率统计。如果表头不含分隔符,可能误判。可手动指定:read_csv("data.csv", delimiter=";")。
_clean_column_name 的规则是:转小写、空格与连字符转下划线、移除非字母数字字符。如需自定义规则,请使用专业版的自定义清洗配置。
merge_csvs 按行拼接时按列名匹配,不要求顺序一致。但如果列名大小写不同(如 Name vs name),需要先统一。
自动转换失败的字段会保持原样(字符串类型)。不会报错,但可能影响后续数值计算。建议转换后检查列类型:print(df.dtypes)。
按列值拆分时,文件名会包含列值。如果列值含特殊字符(如 /、\),可能导致文件名非法。建议先清洗列值或使用专业版的自定义命名规则。
| 依赖项 | 类型 | 是否必需 | 获取方式 | 版本要求 |
|---|---|---|---|---|
| LLM API | API | 必需 | 由 Agent 内置 LLM 提供 | - |
| Python | 运行时 | 必需 | 官网下载 | 3.8+ |
| pandas | 第三方库 | 必需 | pip install pandas | 1.3+ |
| chardet | 第三方库 | 必需 | pip install chardet | 4.0+ |
本免费体验版限制以下高级功能:
解锁全部功能请使用专业版:csv-processor-pro
本 skill 基于原始作品改进,保留原始版权声明:
本改进作品在原始作品基础上进行了深度差异化改造,包括但不限于:
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
{
"success": true,
"data": {
"result": "CSV处理器 免费版处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "csv processor"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}