CSV文件的规范

CSV文件,全程Comma-separated values,就是逗号分隔的数据文件。常用于数据集成的数据交换部分标准部分。

最近看到一个项目组在讨论接口文件CSV的规范,真是替他们着急。讨论点:

  1. 文件是否有标题行(header row),一方坚持要有,接口另一方坚持不能有。
  2. 行分割符,一方坚持使用Unix style的0x0A字符,另一方坚持使用Windows/Dos风格的0x0D0x0A(或者说\r\n),回车换行两个字符。
  3. 列分隔符,一方坚持使用一个不可见字符0x05,说防止和内容字符串冲突,另一方坚持使用0x1B(ESC键)。
  4. 字符串中如果有换行怎么处理,也没有统一的意见。

不会Google真可怕,这个东西很简单,先看是否有标准,如果有严格按照标准走。如果没有标准,看是否有常见做法(或者叫事实标准)。Google一下关键字“CSV”,第一条就是维基百科(wikipedia)的解释。

An official standard for the CSV file format does not exist, but RFC 4180 provides a de facto standard for many aspects of it.
Jiger: CSV没有正式标准,但是国际互联网工程任务组(IETF)给推荐标准RFC 4180描述了CSV文件的结构。

下面一种常见配置:

  • MS-DOS-style lines that end with (CR/LF) characters (optional for the last line)
    Jiger: {使用回车换行(两个字符)作为行分隔符,最后一行数据可以没有这两个字符。}
  • An optional header record (there is no sure way to detect whether it is present, so care is required when importing).
    Jiger:{标题行是否需要,要双方显示约定}.
  • Each record "should" contain the same number of comma-separated fields.
    Jiger:{每行记录的字段数要相同,使用逗号分隔。} 逗号是默认使用的值,双方可以约定别的。
  • Any field may be quoted (with double quotes).
    Jiger:{任何字段的值都可以使用双引号括起来}. 为简单期间,可以要求都使用双引号。
  • Fields containing a line-break, double-quote, and/or commas should be quoted. (If they are not, the file will likely be impossible to process correctly).
    Jiger:{字段值中如果有换行符,双引号,逗号的,必须要使用双引号括起来。这是必须的。}
  • A (double) quote character in a field must be represented by two (double) quote characters.
    Jiger:{如果值中有双引号,使用一对双引号来表示原来的一个双引号}

如果使用了以上推荐标准,可以减少很多时间来讨论方案。

时间: 2024-10-25 12:53:24

CSV文件的规范的相关文章

导入CSV文件

如何把csv文件导入到数据库: 1.excel并不是开放的标准,是微软自己的,你只能猜测它的格式: 标准还有可能变(目前国际上已经制定的标准文档规范) 操作excel,有开源的phpeExcel开源的类. 2.如果是简单的想导入数据库,可以先转化为csv文件 csv文件是简单用逗号隔开的文件格式 把excel导入数据库的方法: $file = 'test.csv'; $fh = fopen($file.'rb'); /* 思路1:每次读一行 每一行的内容再逗号拆成数组 */ while(!feo

java 生成 csv文件

一.csv文件 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据.CSV文件由任意数目的记录组成,记录间以某种换行符分隔:每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符.通常,所有记录都有完全相同的字段序列. CSV是一种通用的.相对简单的文件格式,被用户.商业和科学广泛应用.最广泛

支持各种特殊字符的 CSV 解析类 (.net 实现)(C#读写CSV文件)

CSV是一种十分简洁的数据结构,在DOTNET平台实际使用中发现微软官方并没有提供默认的方法,而网上好多例子发现实现并不严谨甚至一些含有明显错误,所以后面自己实现了一个读写工具类,这里发出来希望方便后面朋友(难免还是会有考虑不到的地方,可随时邮件联系) 使用该工具可对csv文件进行读写(甚至不用去了解CSV的各种规范) 直接以List<List<string>> 形式输出,方便进一步处理 因为工具类需要读取文件资源读取完毕后如果确认不会再次读取,建议立即Dispose,以释放文件句

oracle导出多CSV文件的靠谱的

oracle导出多CSV文件的问题 ---------------------------------------------------------------------- 用ksh脚本从oracle数据库中导出80w数据到csv文件,如用户给定名字为a.csv(文件最大4000行记录),则自动生产文件为a_1.csv,a_2.csv,...., a_200.csv 我已经实现了一个方法,但80w要导5小时,用户没法接受.如下: sqlplus -s user/pwd @${SqlDir}/

字符串与csv文件的日常操作

本周使用习惯了函数式编程,这样可以节省不少繁琐的步骤,而且对于程序的条理化非常有益.说来简单就是每个东西写成函数,规定输入输出. 下一周的任务就是面向对象了,把对象这个东西搞清楚,说不定可以重写整个文件为对象的操作 这里说几个本周很经常用的方法,一个是构建字符串数据中的字典数据,实际就是一个列表,这个列表我也是参考了一个tf-idf的文档给出的方法,核心思想就是将每一个字符串填入一个list最后将list写入循环对比,如果碰到一样的跳过,如果遇到不一样的输出,并且把这个字符串同样装入到list中

C/C++读写csv文件(用getline探测逗号分隔符)

csv文件其实就是文本文件,每行字段用逗号分隔. 代码 [cpp] view plain copy print? #include <iostream> #include <string> #include <vector> #include <fstream> #include <sstream> using namespace std; int main() { // 写文件 ofstream outFile; outFile.open(&q

解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG

解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG [email protected] http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-6-6 方法一: 出处:http://blog.csdn.net/leonzhouwei/article/details/8447643 直接用 Excel 打开 UTF-8 编码的 CSV 文件会导致汉字部分出现乱码. 原因是 Excel 以 ANSI 格式打开,不会做编码识别. 打开 UTF-8 编

python csv文件打开错误:_csv.Error: line contains NULL byte

正常的csv文件读取如下: #coding:utf-8 import csv csvfilename = 'demo.csv' print u'################获取某一行' with open(csvfilename, 'rb') as csvfile: reader = csv.reader(csvfile) rows = [row for row in reader] print rows[0], rows[1], rows[2], rows[3] print u'#####

使用pandas处理大型CSV文件

# -*- coding:utf-8 -*- ''' CSV 常用API 1)reader(csvfile[, dialect='excel'][, fmtparam]),主要用于CSV 文件的读取,返回一个 reader 对象用于在CSV 文件内容上进行行迭代. 参数: csvfile,需要是支持迭代(Iterator)的对象,通常对文件(file)对象或者列表(list)对象都是适用的,并且每次调用next() 方法的返回值是字符串(string): dialect 的默认值为excel,与