CSV 输出与转义约定
让模型直接输出 CSV 时,转义规则要先说清:字段含逗号、引号或换行时用英文双引号包裹,内部引号写成两个引号;缺失值留空字段;除表头外不输出说明文字。CSV 的容错性比 JSON 差很多——多一个未转义的逗号,整行的列就整体错位,而错误往往要到下游统计出异常才被发现。
基本信息
| 表头 | 固定列名与顺序,作为文件第一行 |
|---|---|
| 转义 | 逗号、引号、换行三类字符必须处理 |
| 缺失 | 留空字段;语义不清时另加一列标记来源 |
| 纪律 | 不要输出代码围栏与表头之外的说明文字 |
典型使用场景
- 批量导出主机清单:字段含逗号说明时最容易出错
- 数据核对表:下游用脚本解析,列对齐是硬要求
- 结果交付:直接给业务方导入表格软件
- 评测结果导出:逐样本的分数与判定结果落表
- 日志转换:把半结构化文本转成可分析的列式数据
CSV 约定模板
CSV 约定模板
输出 CSV(首行为表头,不要代码围栏):
host,port,status,note
字段规则:
- 含逗号、引号或换行的字段用英文双引号包裹
- 字段内部的引号写成两个引号("")
- 缺失值留空字段,不要写 NULL / N/A / 无
- 不要输出表头之外的任何说明文字
- 行尾不要有多余空格
示例行:
10.0.0.1,22,open,"防火墙放行,仅管理网段"
10.0.0.2,443,closed,转义与列位对照
| 情况 | 写法 | 写错后的表现 |
|---|---|---|
| 字段含逗号 | 用双引号包裹整个字段 | 列整体右移,后续字段全部错位 |
| 字段含双引号 | 内部引号写成两个引号 | 解析器把引号当边界,字段被截断 |
| 字段含换行 | 双引号包裹,保留换行 | 一行被拆成两行,行数与样本数不一致 |
| 缺失值 | 留空字段 | 写 N/A 或无,下游按字符串处理而非空值 |
| 中文逗号 | 按原文保留 | 中英文逗号混用时切分规则不一致 |
解析端要能检测列数异常:每行按列数校验,发现行内列数与表头不一致就抛错并保留原始行。这类检查成本很低,能挡住绝大多数格式噪声。
中文逗号和英文逗号混用时,字段切分规则必须先声明,否则同一列文本在不同工具里的解析结果不同。必要时统一把中文标点转换为英文再输出。