CSV文件

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

用法

  CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。 [1] 
例如,一个用户可能需要交换信息,从一个以私有格式存储数据的数据库程序,到一个数据格式完全不同的电子表格。最可能的情况是,该数据库程序可以导出数据为“CSV”,然后被导出的CSV文件可以被电子表格程序导入。
“CSV”并不是一种单一的、定义明确的格式(尽管RFC 4180有一个被通常使用的定义)。因此在实践中,术语“CSV”泛指具有以下特征的任何文件:
  1. 纯文本,使用某个字符集,比如ASCIIUnicodeEBCDICGB2312
  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 值认为是注释的。
 
posted @   溪风_不忘初心  阅读(258)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示