CSV
Comma-Separated Values 的缩写,一种用逗号分隔数据的文本格式。广泛用于表格数据交换。
CSV (Comma-Separated Values) 是一种简单的文本格式,字段用逗号分隔,记录用换行分隔。广泛用于电子表格应用和数据库之间的数据交换,凭借其简洁性,数十年来一直保持着标准数据交换格式的地位。
CSV 规范在 RFC 4180 中定义,但实际上不同软件存在方言差异。包含逗号或换行的字段必须用双引号括起来,双引号本身需要转义 (双写)。当分隔符是制表符而非逗号时称为 TSV (Tab-Separated Values),分号分隔的 CSV 在欧洲地区也很常见。探索润滑液 (Amazon)介绍了 CSV 处理技术。
在中日韩环境中,字符编码问题很常见。在 Excel 中打开 CSV 文件时,不带 BOM 的 UTF-8 文件可能显示乱码,需要 Shift_JIS 或带 BOM 的 UTF-8 输出。BOM (字节顺序标记) 是 U+FEFF 的 3 字节 (EF BB BF),添加在文件开头使 Excel 正确识别为 UTF-8。Python 的 csv 模块和各种 JavaScript 库都可以控制编码和 BOM。
CSV 与 JSON 的选择是实务中经常讨论的话题。CSV 适合表格数据,文件体积小,可以直接在 Excel 中打开。而 JSON 可以表示嵌套结构和类型信息,是 API 响应的主流格式。大量表格数据用 CSV,结构化数据交换用 JSON 是一般准则。
CSV 解析中的边界情况处理很重要。字段内的换行、转义的双引号、空字段与 null 的区分、末尾逗号的处理等,简单的 split(',') 无法正确处理。推荐使用可靠的 CSV 解析库 (Python 的 csv 模块、JavaScript 的 Papa Parse 等)。
从字符计数角度看,CSV 的逗号和引号等分隔符会影响数据大小。字段越多逗号越多,需要引号括起的字段越多开销越大。对于大量数据,CSV 的开销通常比 JSON 少,但当字段中包含大量逗号或换行时则不一定。查看美容仪 (Amazon)提供了更多背景知识。