CSV 文件格式

CSV 文件格式

描述

逗号分隔值(Comma-Separated Values,CSV,有时成为字符分隔值)。

其文件以纯文本形式存储表格数据(数字和文本),文件的每一行都是一个数据记录。

每个记录由一个或多个字段组成,用逗号分隔。使用逗号作为字段分隔符是此文件格式的名称的来源,因为分隔字符也可以不是逗号,有时也称为字符分隔值。

CSV 广泛用于不同体系结构的应用程序之间交换数据表格信息,解决不兼容数据格式的互通问题。一般按照传输双方既定标准进行格式定义,而其本身并无明确格式标准。

特征

  • 文件采用纯文本存储,需要使用某个字符集(ASCII、Unicode、UTF-8等)
  • 数据由记录组成(一般是每一行一条记录)
  • 每条记录被分隔符分为一个个字段(常用的分隔符有 ',''\t'' '';'等)
  • 每条记录都有同样的字段序列

优点

由于 CSV 文件格式的特性。

CSV 格式的文件可以用 Excel 和 WPS 等表格工具以表格的形式打开,便于查看和编辑。

缺点

由于 CSV 文件格式没有严格的标准(实际上可以认为没有标准),会造成使用不同的工具打开时会有不同程度的乱码问题。

(你本地的 Excel 和 WPS 打开同一个 CSV 文件,往往显示的情况会不一样。甚至同一个 Excel 软件的不同版本,也会显示不一样的结果)

所以进行一些约定很重要。

CSV 文件解析的关键点

字符集:由于文件是采用纯文本存储的,不同字符集对每个字符的存储方式不一样。需要统一采用一个字符集才能很好的进行兼容。(关于常用的 ASCII、Unicode、UTF-8 字符集可以看一下这个ASCII、Unicode、UTF-8

分隔符:一般常用的是 ','(逗号分隔符)。但是有些 CSV 文件需要存储文章句子信息等,这些信息 ',' 符是常用字符,容易造成解析出错或者解析方法复杂。可以选用 '^' / '\t' 等不常用的字符作为分隔符。应用途而异,具体问题具体分析。

记录分隔:一般来说以一行为一条记录,那么记录与记录之间就是常用"换行符"进行分隔的?这里就需要看一下附录:回车符 CR 与换行符 LF 的行末结束符之争

空字段:我们常使用 CSV 文件当做表格来处理,那么表格显然存储某些字段为空的情况。这种情况下需要注意保留两个分隔符,表示一段空字段。

Excel 和 WPS 建议格式

Warning:个人测试结果,有问题不要打我!!!(难免有版本问题)

Warning:个人测试结果,有问题不要打我!!!(难免有版本问题)

Warning:个人测试结果,有问题不要打我!!!(难免有版本问题)

由于经常使用的文字包含 英文 和 简体中文,需要考虑一个合适的字符集:

信息 建议设置
字符集 Unicode
分隔符 ','(逗号分隔符)
记录分隔 这两个软件基本上是在 Windows 上使用的,那么需要采用 CRLF("\r\n") 作为行末分隔符
其它 如果存储在字段里有 ',' 符号,需要用 '"' 包含字段。如:`姓名 年龄,性别 地址,CSV 的记录为:姓名,"年龄,性别",,地址CRLF`

基本上满足以上要求的,可以完美的用 Excel 和 WPS 打开查看和编辑和。

附录:回车符 CR 与换行符 LF 的行末结束符之争

在计算机出现之前,人们常用电传打字机(Teletype Model 33)打印字符,它每秒可以打印 10 个字符(0.1 秒 / 字符)。

但在打印完一行后,准备换行时发现换行需要用去 0.2 秒。

而这 0.2 秒正好可以打印两个字符。

如果这 0.2 秒内有新的字符传过来,那么传过来的字符将会丢失(因为它正在换行,无法进行打印作业)。

电传打字机的研发人员为了解决此问题,决定在每行后面添加两个表示接受的字符:CRLF

CR(Carriage Return,回车符):告诉打字机把打印头重定位在该行的左边界

LF(Line Feed,换行符):告诉打字机把打印头下移一行,即把纸向下移一行


随着计算机的出现,这种处理机制被移到计算机上。

但是早期计算机容量很小(存储器很贵),有人认为每行结尾加 2 个字符太浪费了,应该加 1 个字符就行。

从此出现 行末结束符 之争:

换行符('\n',LF,Line Feed)
回车符('\r',CR,Carriage Return)

系统 行末结束符 ASCII 表示 结束符字符数
Windows,DOS CRLF "\r\n" 2
Linux,UNIX LF "\n" 1
Mac CR "\r" 1

这种分歧导致:

Windows 打开 Linux 的文件,所有的文字都会变成一行(因为 Windows 认为 CRLF 才表示换行)

而 Linux 打开windows 文件,每一行结尾会多出一个 ^M 符号

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容