CSV(逗号分隔值档案格式)

生活百科 2023-01-25 19:31生活百科www.aizhengw.cn

CSV(逗号分隔值档案格式)

逗号分隔值(Comma-Separated Values,CSV,有时也称为字元分隔值,因为分隔字元也可以不是逗号),其档案以纯文本形式存储表格数据(数字和文本)。纯文本意味着该档案是一个字元序列,不含必须像二进制数字那样被解读的数据。CSV档案由任意数目的记录组成,记录间以某种换行符分隔;每条记录由栏位组成,栏位间的分隔设定是其它字元或字元串,最常见的是逗号或制表符。通常,所有记录都有完全相同的栏位序列。通常都是纯文本档案。建议使用WORDPAD或是记事本来开启,再则先储存新档后用EXCEL开启,也是方法之一。

CSV档案格式的通用标準并不存在,在RFC 4180中有基础性的描述。使用的字元编码同样没有被指定,bitASCII是最基本的通用编码。

基本介绍

  • 中文名CSV
  • 外文名Comma-Separated Values
  • 中文名逗号分隔值
  • 套用在程式之间转移表格数据

用法

CSV是一种通用的、相对简单的档案格式,被用户、商业和科学广泛套用。最广泛的套用是在程式之间转移表格数据,而这些程式本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程式都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。
例如,一个用户可能需要交换信息,从一个以私有格式存储数据的资料库程式,到一个数据格式完全不同的电子表格。最可能的情况是,该资料库程式可以导出数据为“CSV”,然后被导出的CSV档案可以被电子表格程式导入。
“CSV”并不是一种单一的、定义明确的格式(儘管RFC 4180有一个被通常使用的定义)。在实践中,术语“CSV”泛指具有以下特徵的任何档案
  1. 纯文本,使用某个字元集,比如ASCII、Unicode、EBCDIC或GB2312;
  2. 由记录组成(典型的是每行一条记录);
  3. 每条记录被分隔设定分隔为栏位(典型分隔设定有逗号、分号或制表符;有时分隔设定可以包括可选的空格);
  4. 每条记录都有同样的栏位序列。
在这些常规的约束条件下,存在着许多CSV变体,故CSV档案并不完全互通。,这些变异非常小,并且有许多应用程式允许用户预览档案(这是可行的,因为它是纯文本),然后指定分隔设定、转义规则等。如果一个特定CSV档案的变异过大,超出了特定接收程式的支持範围,那幺可行的做法往往是人工检查并编辑档案,或通过简单的程式来修复问题。在实践中,CSV档案还是非常方便的。

规则

1 开头是不留空,以行为单位。
2 可含或不含列名,含列名则居档案第一行。
3 一行数据不跨行,无空行。
4 以半角逗号(即,)作分隔设定,列为空也要表达其存在。
5列内容如存在半角引号(即"),替换成半角双引号("")转义,即用半角引号(即"")将该栏位值包含起来。
6档案读写时引号,逗号操作规则互逆。
7内码格式不限,可为 ASCII、Unicode 或者其他。
8不支持数字
9不支持特殊字元

实例

下面是一个实际 CSV 档案中的部分内容,让大家对他有一个感性的认识。我们选的是 Sjojo_Rescan 的 CSV 档案 (Sjojo 是 ASW- 亚洲扫图风的成员之一)。
sj_mino1001.jpg,715282,4FB55FE8,
sj_mino1002.jpg,471289,93203C5C,
sj_mino1003.jpg,451929,C4E80467,
通常 CSV 档案开头是不留空的,以行为单位,每行中记录一张图片的多项数据,每项数据用逗号来分隔(标準英文逗号)。一般说来集图用的.CSV 档案的格式是这样的
档案名称, 档案大小 (以位元组为单位),CRC 校验值, 注释 (可省略)
sj_mino1001.jpg,715282,4FB55FE8,
| | | |
档案名称 档案大小 CRC 值 注释 (已省略)
如果你的机器上装了 Microsoft Excel的话,.csv 档案默认是被Excel打开的。需要注意的是,当你双击一个.CSV 档案,Excel 打开它以后即使不做任何的修改,在关闭的时候 Excel 往往会提示是否要改成正确的档案格式,这个时候如果选择“是”,因为 Excel 认为.CSV 档案中的数字是要用科学记数法来表示的,Excel 会把 CSV 档案中所有的数字用科学计数来表示(2.54932E+5 这种形式),这样操作之后,只是在 Excel 中显示的时候会不正常,而 csv 档案由于是纯文本档案,在使用上没有影响;如果选择了“否”,那幺会提示你以 xls 格式储存为 Excel 的一个副本。
所以如果你的 CSV 档案绝大部分都是用在集图上的话,建议把.CSV 的默认打开方式改成任意一个文本 编辑器,系统自带的记事本就是个不错的选择。
好,让我们回到 CSV 档案的格式中来。见上面,从左到右 sj_mino1001.jpg 是档案名称,715282 是以位元组表示的档案大小。当档案名称中包含逗号的时候,由于逗号在 CSV 档案中特殊的作用,为了不至于产生歧义,需要用引号把档案名称括起来。比如 "The Art, Fantasy.jpg",384211,...,.... 接着是一个 8 位的 16 进制数字 4FB55FE8,这是档案的 CRC32 校验值。整个 CSV 档案的精髓都在这里。
让我们举个小例子来说明它的意义Sjojo 发布了一张图 sj_mino1001.jpg,假设你是从朋友手中拿到这张图的,那幺你肯定常常会有这样的疑问,这张图在传播的过程中是否被改动过呢?是否无意中遭到了损坏呢?CRC 就是为解决这个问题而存在的。
一般情况下,扫图家每发布了一套图,就放出一个 CSV 档案(这种 CSV 通常叫做 Official CSV,也就是官方发布的 CSV 的意思),这个 CSV 中的 CRC 值是用专门的软体通过 CRC32 算法(常用的 CRC 算法还有 CRC16)对档案运算后生成的一个值, 这个值可用作档案真身的标誌。在绝大多数情况下,如果这个档案在传播过程中无论是大小还是内容被改动过。那幺,用同样的 CRC32 算法再对档案进行运算后产生的 CRC 校验值就完全不一样了。如果得出的 CRC 值是一样的,则完全有理由认为这个档案是真身,没有被改动过。还有些时候,收来的图片档案名称被改动过了,那幺你怎幺知道谁是谁呢?
这个时候 CRC 值又起作用了用专用的软体对图片处理后,可以得到档案的大小和 CRC 值,然后根据大小和 CRC 值在 CSV 中寻找是否有适合的图片。如果有,就会把图片的名字改成 CSV 里的。
举个例子,你收到了一张图片,名字是 pic0001.jpg,你知道这张图片是 Sjojo_Rescan 这个集子里面的,不知道具体是哪一张。用软体得到它的大小和 CRC 分别是 715282 和 4FB55FE8,那幺软体在 CSV 档案里找到一行 sj_mino1001.jpg,715282,4FB55FE8, 大小和 CRC 都符合,软体就认为这张图片的原名是 sj_mino1001.jpg,接着自动把档案的名字改成 sj_mino1001.jpg
改动的不是 CSV 档案而是图片的档案名称。接下来的是注释和说明,可以省略掉。需要注意的是注释的后面是没有逗号的,如果要省略注释的话,一定要在 CRC 值的后面保留一个逗号,否则软体会把 CRC 值认为是注释的。

规范

逗号分隔列出日期之前,儘早从个人电脑,但被广泛套用于最早前IBM个人电脑时代的个人电脑磁带存储备份和交 换的信息的资料库机器的两种不同的架构。在这一天,负担得起的硬碟驱动器不存在,和许多小型企业试图实现 效益的计算使用软碟的软体。
CSV没有通用标準规范。不同的程式间CSV的标準有差异很常见,这可能导致互动操作困难。网际网路通信的CSV档案,资料的IETF档案( 符合RFC 4180于2005年10月)介绍了格式的“text/csv格式”MIME类型登记的IANA负责。另一个相关的规格是由派出文字其中也包括CSV格式。
许多非正式档案的存在,说明CSV格式。如何逗号分隔值(CSV)档案格式概述了CSV格式中使用最广泛的套用和解释它如何能最好地利用和支持。

基本规则

CSV格式是分隔的数据格式,有栏位/列分隔的逗号字元和记录/行分隔换行符。栏位包含特殊字元(逗号,换行符,或双引号),必须以双引号括住。行内包含一个项目是空字元串,可以以双引号括住。栏位的值包含双引号时,要双写这个双引号(就像把一个双引号当做转义符一样)。CSV档案格式并不需要特定的字元编码,位元组顺序,或行终止格式。
  • 每个记录是一个行终止了换行符(ASCII码/低频= 0×0A)或回车换行符和一双(ASCII码/ CRLF = 0×0D0×0A),,线路中断可以嵌入。
  • 栏位用逗号分隔(虽然地点在逗号作为小数点,分号是用来代替作为定界符)
1997,Ford,E350
  • 在某些的CSV实施,领导和尾随空格或制表符,毗邻逗号,装饰。这种做法是有争议的 , 实际上是明文禁止的RFC 4180,其中规定,“被认为是空间的一个组成部分领域 , 而不应被忽视。”
  • 各领域内的嵌入式逗号必须存放在双引号字元。
  • 各领域内的嵌入式双引号字元必须是封闭的双引号字元,每一个嵌入式双引号字元必须用一对双引号字元。
  • 各领域内的嵌入式换行符必须封闭在双引号字元。
  • 领域的前导或尾随空格内必须封闭双引号字元。 (见评论领导和尾随空格以上。)
  • 栏位可能永远是封闭的双引号字元,是否有必要或没有。
  • 第一条记录中的CSV档案中可能包含列名的每个领域。

举例说明

製造商
型号
说明
价值
1997
Ford
E350
ac, abs, moon
3000.00
1999
Chevy
Venture "Extended Edition"
4900.00
1999
Chevy
Venture "Extended Edition, Very Large"
5000.00
1996
Jeep
Grand Cherokee
MUST SELL!
air, moon roof, loaded
4799.00
上面表格内容若以CSV格式表示就会像下列
年,製造商,型号,说明,价值
1997,Ford,E350,"ac, abs, moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00
1996,Jeep,Grand Cherokee,"MUST SELL!
air, moon roof, loaded",4799.00
以上这个CSV的例子说明了:
  • 包含逗号, 双引号, 或是换行符的栏位必须放在引号内.
  • 栏位内部的引号必须在其前面增加一个引号来实现文字引号的转码.
  • 分隔设定逗号前后的空格 可能不会 被修剪掉. 这是RFC 4180的要求.
  • 元素中的换行符将被保留下来.

档案转换

打开包含地址数据的 Excel 工作簿。
在地址示例中,第一个地址包含四行,第二个地址仅包含三行。,每个地址集之间相隔一行。
要将地址数据成功转换为 CSV 文本档案,所有地址必须包含相同的行数并且每个地址集之间相隔的行数必须相同。例如,将地址示例更改为以下形式
A1Jane Clayton
A2Microsoft
A3456 Elm Street
A4Sometown, USA 67890
A5
A6
A7Jose Saraiva
A8789 Oak Road
A9
A10Mytown, USA 54321
注意每个地址集都包含四行,相隔两行。
要在 Excel 工作表中插入新行,请选择要在其上插入新行的行标题。在“插入”选单上,单击“行”。
注意在 Excel 2007 中,要在工作表中插入新行,需选择要在其上插入新行的行,单击“主页”选项卡上“单元格”组中的“插入”,然后单击“插入工作表行”。
在“档案”选单上,单击“储存为”。
注意在 Excel 2007 中,单击“Office 按钮”,然后单击“储存为”。
在“储存为”对话框中执行以下操作
在“保存类型”框中,单击“CSV (逗号分隔)(.csv)”。
在“档案名称”框中,键入 CSV 档案的名称(例如 Address.csv),然后单击“保存”。
如果收到下面的讯息,请单击“确定”
选定的档案类型不支持包含多个工作表的工作簿。
· 如果只保存活动工作表,请单击“确定”按钮。
· 如果要保存所有工作表,请使用不同的档案名称将其分别保存,或选择一种支持多工作表的档案类型。
在收到以下讯息时单击“是”
Address.csv 可能含有与 CSV (逗号分隔) 不兼容的功能。是否保持工作簿的这种格式?
· 如要保持这种格式,去掉所有不兼容的功能,请单击“是”。
· 如要保留这些功能,请单击“否”。然后再用最新 Excel 格式保存一份副本。
· 如想知道哪些内容会丢失,请单击“帮助”。
在“档案”选单上,单击“关闭”,然后退出 Microsoft Excel。

Copyright@2015-2025 www.aizhengw.cn 癌症网版板所有