核心用法
CSV Handler 专为建筑行业数据处理设计,基于 Python pandas 和 chardet 库构建。核心功能包括:
1. 智能检测:自动识别文件编码(支持 UTF-8、Latin-1、CP1252 等)和分隔符(逗号、分号、制表符、竖线)
2. 数据剖析:profile_csv() 方法快速分析文件结构,返回编码、分隔符、行列数、列名等元数据
3. 自动清洗:清理列名(标准化为小写下划线格式)、去除空行空列、裁剪字符串空白
4. 批量操作:支持多文件合并 (merge_csvs) 和按列拆分 (split_csv)
5. 专用解析器:ScheduleCSVHandler 自动识别日期列;CostCSVHandler 智能解析成本金额列
显著优点
- 开箱即用:无需预先知道文件编码或分隔符,自动适配欧洲软件常见的分号分隔和 Latin 编码
- 健壮性:
on_bad_lines='skip'和errors='replace'确保损坏文件仍可读取 - 类型推断:自动尝试将列转换为数值或日期时间类型
- 建筑场景优化:针对进度计划(P6 导出)和成本估算文件提供专用解析逻辑
潜在缺点与局限
- 编码检测限制:chardet 对短文件或小样本可能误判,10000 字节采样在超大文件中可能不够代表性
- 分隔符启发式简单:仅统计出现频率,未考虑引号上下文,极端情况下可能误判
- 日期解析激进:"start"/"end"/"date" 关键字匹配可能误伤非日期列
- 内存占用:
low_memory=False适合大文件但增加内存压力;合并大 CSV 时未实现分块处理 - 无数据验证:缺少 schema 校验,无法确保关键字段(如 WBS 编码)格式正确
适合人群
- 建筑项目经理、BIM 工程师、成本估算师
- 需要整合多来源(P6、SAP、ERP)数据的分析人员
- 处理历史项目档案中编码混乱的遗留 CSV 文件
常规风险
- 编码回退风险:检测失败时默认 UTF-8,可能导致非 ASCII 字符(如中文、特殊符号)乱码
- 数据丢失风险:
on_bad_lines='skip'静默丢弃损坏行,关键数据可能遗漏 - 类型转换失败:金额列含货币符号时,
replace(r'[\$,]', '')仅处理美元,其他币种需扩展正则 - 路径遍历:
output_dir参数未验证,传入恶意路径可能写入系统敏感目录 - 列名冲突:多文件合并时同名列自动添加后缀,可能导致下游代码引用错误