逗号ぶんへだた

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
逗号ぶんへだた
逗号ぶんへだたれつ
扩展めい
.csvある.txt
互联网媒体ばいたい类型
text/csv
格式かくしき类型またが平台ひらだいくしぎょうすうすえりゅう
さく为容かずすえ按字だんぶんへだたてきれつひょうてきしんいき组织
标准RFC 4180

逗号ぶんへだた(Comma-Separated Values,CSVゆう时也しょうぶんへだたいん为分へだた也可以不逗号),其文けん纯文ほん形式けいしきそんひょうかくかずすえ数字すうじ和文わぶんほん)。纯文ほん意味いみ该文けんいち序列じょれつ含必须像二进制数字那样被解读的数据。CSVぶんけんゆかり任意にんいすう目的もくてき记录组成,记录间以ぼう种换ぎょうぶんへだたごとじょう记录ゆかりだん组成,だん间的ぶんへだた其它あるくしさいつね见的逗号あるせいひょう通常つうじょう所有しょゆう记录ゆう完全かんぜんしょうどうてきだん序列じょれつ

CSVぶんけんてき格式かくしき存在そんざい通用つうよう标准,也没ゆう指定していしょ使用しようてき编码,ただしざいRFC 4180中有ちゅううもと础性てき描述, 而7-bit ASCIIさい基本きほんてき通用つうよう编码。

用法ようほう[编辑]

CSVいち通用つうようてきあい对简单的ぶんけん格式かくしきよう户、しょう业和科学かがく广泛应用。さい广泛てき应用ざいほどじょ轉移てんいひょうかくすうすえ,而这些程じょ本身ほんみざいけんようてき格式かくしきじょう进行操作そうさてき往往おうおうこれ私有しゆうてきえいProprietary format/ある无规范的格式かくしき)。よし为大りょうほどじょ支持しじぼう种CSV变体,いたりしょうさく为一种可选择的输入/输出格式かくしき

れい如,一个用户可能需要交换信息,从一个以私有格式存储数据的数据库程序,いた一个数据格式完全不同的电子表格。さい可能かのうてきじょう况是,该数すえ库程じょ以导すうすえ为“CSV”,しかきさき导出てきCSVぶんけん以被电子ひょうかくほどじょ导入。

“CSV”いち种单いちてきてい义明确的格式かくしきつきかんRFC 4180ゆう一个被广泛使用的定义),いん此在实践ちゅう,术语“CSV”泛指具有ぐゆうれつとくせいてきにんなんぶんけん

  1. 纯文ほん使用しようぼう个字しゅうASCIIUnicodeEBCDICあるGB2312(简体ちゅうぶん环境)とう
  2. ゆかり记录组成(典型てんけいてきごとぎょういちじょう记录);
  3. まいじょう记录ぶんへだたえいDelimiterぶんへだただん典型てんけいぶんへだたゆう逗号、ぶんごうあるせいひょうゆう时分へだた包括ほうかつ选的そらかく);
  4. まいじょう记录みやこゆうどう样的だん序列じょれつ

ざい这些つね规的约束条件下じょうけんか存在そんざい许多CSV变体,CSVぶんけん不完全ふかんぜんけんようしか而,这些非常ひじょうしょう,而且ゆう许多应用ほどじょ以让よう户预览文けん(这是ぎょうてきいん为它纯文ほん),甚至指定していぶんへだた、转义规则とう。如果いち特定とくていCSVぶんけんてき异过だいちょうりょう特定とくてい接收せっしゅうほどじょてき支持しじ范围,么可ぎょうてき做法通常つうじょう人工じんこう检查并编辑文けんあるつう过简单的ほどじょらいおさむ复问题。

历史[编辑]

逗号ぶんへだた值是一种数据格式,れつ表方おもてかたしき(“自由形じゆうがたしき”)输入/输出てい义在FORTRAN 77(77代表だいひょう1977ねんちゅうれつひょう方式ほうしきてき输入使用しようりょう逗号/あるそらかくさく为分へだた所以ゆえんようらい结束引文てきくし不能ふのう包含ほうがん逗号あるそらかく[1]

あい对于固定こていれつ宽数すえ格式かくしき,逗号ぶんへだた值的れつひょう仅输いれれい如输いれいたあなさら方便ほうべん,而且とう一个值被错打一列时也不容易产生错误结果。

逗号ぶんへだたれつ(CSL)いちかずすえ格式かくしきおこりはつざいさい古老ころうてき简单电脑ちゅうしょう逗号ぶんへだた(CSV)。ざい个人电脑(とう时更普遍ふへんしょう为“いえよう电脑”)产业,一个常见的应用是,しょうくわだて使用しようばん邮件れつひょう生成せいせい推销邮件。[らいみなもと請求せいきゅう]

CSL/CSVようらいさく为简单的かずすえ。一些早期的软件应用,文字もじ处理まこと许一系列けいれつ“变量すうすえざい两个ぶんけん间被あい并:一个是模板文件,いち个是包含ほうがん姓名せいめい其它すうすえだんてきCSLすうすえ库。许多应用ほどじょ仍然ゆう这种能力のうりょく[2]

逗号ぶんへだたれつ过去现在よう于在两个不同ふどう构的つくえ间交换数すえ库信いき。纯文ほんてきCSVぶんけん大幅おおはば避免りょうけんようせい节顺じょ。这些ぶんけんだい部分ぶぶん读的,所以ゆえんざいぼつゆうかん美的びてきぶん档或どおり讯的じょう况下仍然很容易ようい处理。

つね规功のう[编辑]

CSV格式かくしきさいこうもちいらいひょう记录集合しゅうごうある序列じょれつ,其中てきごとじょう记录ゆう完全かんぜんしょうどうてきだん序列じょれつ。这相とう关系すうすえちゅういち个单いちてき关系あるもの典型てんけいてき电子ひょうかくちゅうてきすうすえ(虽然不能ふのう计算)。

CSV格式かくしきぼつゆう限定げんてい于某个特定とくていしゅうかんようUnicode还是ようASCIIぼつゆう问题(つきかん特定とくていほどじょ支持しじてきCSV可能かのうかいゆう它们自己じこてき局限きょくげんせい)。和大かずひろ部分ぶぶんてき私有しゆうすうすえ格式かくしき不同ふどう,CSVぶんけん以从一个字符集翻译到另外一个字符集。しか而,CSV提供ていきょうにんなんみちらい表明ひょうめい使用しようてき什么しゅう所以ゆえん必须另外どおり讯,あるざい接收せっしゅう结束时指(如果可能かのう)。

如前しょじゅつ包含ほうがん关系まとすうすえ不能ふのう导出为单いちてきCSVぶんけん最多さいたただのう添加てんかさらてき标识约定,れい如标识和ぶんへだた不同ふどうてき关系。这种标识并不难于设计实现,ただしいん为没ゆう方面ほうめんてき约定,所以ゆえん基本きほん不具ふぐ备可移植いしょくせい

どう样地,CSV本身ほんみ不能ふのうひょうぶん层级てきあるめんこう对象まとすうすえ库或其它すうすえ。这是いん为每いちじょうCSV记录应当ゆうどう样的结构。CSVいん基本きほん适用于ぶん如由HTMLXMLあるもの其它てき标记语言ある文字もじ处理わざ术创けんてき

だんかい变化てき统计すうすえ库往往有类似关系てき结构,ただしかいゆう一些字段组是可重复的。れい如,健康けんこうすうすえ库如人口じんこうあずか健康けんこう调查えいDemographic and Health Surveys,对于一名给定的父母会为每个孩子重复一些问题(也许ちょくいたぼう个确じょうてき最大さいだいてき孩子すうもく)。统计分析ぶんせきけい往往おうおう包含ほうがん以“旋转”这类すうすえてき工具こうぐれい如,一条いちじょう包含ほうがん5个孩しんいきてき父母ちちはは”记录,以被分解ぶんかい为5じょう单独てき记录,まいじょう记录包含ほうがん(a)一个孩子的信息,(b)一份所有未指定孩子的信息的拷贝。CSV以用“よこてきある“竖的”形式けいしきおもて达这类数すえ

ざい关系すうすえ库中,类似てき问题很容易よういかい决——为每个类てき组另がい创建いち个关けい,并使用しようそと(如父母ちちははてき份证ごうある名字みょうじしょう“孩子”记录与しょう关的“父母ちちはは”记录连接おこりらいざい标记语言如XMLちゅう,这类组会包含ほうがんざいいち个容ちゅうれい如,<child>),しかきさき按照需要じゅようじゅう复该容器ようき。对于CSV,则尚无被广泛接受せつじゅてき单文けんかい决方あん

缺乏けつぼう规范[编辑]

“CSV”这个名字みょうじ表示ひょうじよう逗号らいぶんへだたかずすえだんてきしか而,“CSV”这个术语还被广泛よう于形しきかく异的いち系列けいれつ格式かくしきれい如,许多しょ谓的“CSV”ぶんけん实际じょう使用しようせいひょう代替だいたい逗号(这种ぶんけん以更せい确地しょう为“TSV”,そくせいひょうぶんへだた,Tab-Separated Values);いち些实现允许或要求ようきゅう使用しよう单引ごうあるそう引号らいつつみ裹某些或全部ぜんぶだん;还有いち些实现保留ほりゅう最前さいぜんめんてき一条记录作为表头来包含字段名序列。

其它てき实现包括ほうかつ如何いか处理さらおおつね见的だんぶんへだた如空かくあるぶんごう[3]かずざいぶん本字ほんじ段中だんなかてき换行[4]さら微妙びみょうてき对一个空行的翻译:うつし一条零字段的记录,あるもの一条有一个零长度字段的记录同样可以得到这样的结果;いん此对它的かい码是ゆう歧义てき——ただ过这种歧义通常つうじょう无伤大雅たいが

RFC 4180しょ记载てき标准以使CSV交换简单しか而,这一标准仅指定了对基于文本的字段的处理。对各个字だんてきぶんほんてきこぼし译仍しかよし引用いんようほどじょ指定していてきとく别地,并没ゆう标准らい指定してい如何いか表示ひょうじ小数しょうすうつきかん它们普遍ふへん嵌入かんにゅうざいCSVすうすえちゅう,并且一些国家使用点作为小数分隔符,いち国家こっか使用しよう逗号れい如,法文ほうぶんCSVぶんけん可能かのうはた圆周りつてき近似きんじ值写为3,14159。

いち通用つうようてき(如果わざ术上れいじん满意)互操作性そうさせいわるかい决方あん人工じんこう介入かいにゅういん为CSVぶんけん纯文ほんよう户可以通过使用しようぶんほん编辑轻易预览诊断绝大部分ぶぶん(如果全部ぜんぶ)问题。这样做的れい包括ほうかつ Microsoft Access ひとし(关系)すうすえ库产ひん,其在导入 CSV/TSV 这种すうすえ时便まこと许用户一边预览一边调整诸如表头行、ふんへだた类的选项。

进行ちゅうてき标准[编辑]

“CSV”格式かくしきちゅう大量たいりょう变体てき存在そんざい说明并没ゆういち个“CSV标准”。[5][6]ざいつね见用ほうちゅう,几乎にんなにじょうかいぶんへだたてきぶん本数ほんすうすええいDelimiter-separated values以被统称为“CSV”ぶんけん不同ふどうてきCSV格式かくしき可能かのうかいけんよう

过,RFC 4180いち个将CSV正式せいしきてき努力どりょく。它定义了互联网媒体ばいたい类型“text/csv”,并且さいよう它的规则てきCSVぶんけんしょうかい具有ぐゆう广泛てき移植いしょくせい。它有如下要求ようきゅう

  • 以(CR/LF)结束てきDOS风格てきぎょうさいきさきいちぎょう选)。
  • 一条可选的表头记录(ぼつ有可ゆかもたれてき方式ほうしきらい检测它是存在そんざい所以ゆえん导入时必须谨まき)。
  • まいじょう记录“应当”包含ほうがんどう样数量的りょうてき逗号ぶんへだただん
  • にんなんだんつつみ裹(もちいそう引号)。
  • 包含ほうがん换行そう引号/ある逗号てきだん应当つつみ裹。(いや则,ぶんけん可能かのう不能ふのうせい确处)。
  • 段中だんなかてきいち个(そう)引号必须表示ひょうじ为两个(そう)引号

这个格式かくしき很简单,以被だい部分ぶぶんごえしょう以读取CSVぶんけんてきほどじょ处理。例外れいがい(a)ほどじょ以不支持しじざいつつみ裹的段中だんなか换行,(b)ほどじょ以将选的ひょう头当さくすうすえあるものはただい一个数据行当作可选的表头。

わざ背景はいけい[编辑]

该格しき以追さかのぼいたり早期そうきてき商用しょうよう电脑,它被广泛よう于在电脑间传递数すえ,这些电脑可能かのうかいゆう不同ふどうてき内在ないざい长,需要じゅよう不同ふどうてきすうすえ格式かくしきとうとう。为此,CSVぶんけんざい所有しょゆう电脑平台ひらだいじょう通用つうよう

CSVいちぶんへだたてきえいDelimiter-separated valuesぶん本文ほんぶんけん,它使用しよう逗号らい分割ぶんかつ值(许多CSV导入/导出工具こうぐてき实现也允许使用しよう其它てきぶんへだた)。简单てきCSV实现禁止きんしだん值中包含ほうがん逗号ある其它特殊とくしゅ如换ぎょうさら复杂てきCSV实现まこと许这些特殊とくしゅ,它们往往おうおう要求ようきゅうよう"(そう引号つつみ裹这些包含ほうがん保留ほりゅう(如逗ごうそう引号あるふとし通用つうようてき换行てきすう值。嵌入かんにゅうてきそう引号以用连续两个そう引号らい表示ひょうじCreativyst 2010),あるもの使用しよう转义はんはすゆずりはれい如在Sybase Centralちゅう)。

ざい计算つくえ科学かがく术语ちゅう,CSVぶんけん以被认为いち个“平面へいめんぶん件数けんすうすえ”。

基本きほん规则及举れい[编辑]

存在そんざい许多描述“CSV”格式かくしきてき正式せいしきぶんけんIETF RFC 4180(如上じょじょうしょじゅつてい义了格式かくしき“text/csv”互联网媒体ばいたい类型,并已ちゅうさつIANA。(Shafranovich 2005)另一个相关规范由含字だんぶんほんえいFielded text提供ていきょうCreativyst (2010)提供ていきょうりょういち个概じゅつ,说明りょうざいさい广泛使用しようてき应用ほどじょちゅうしょ使用しようてき变体,并解释了CSV怎样才能さいのうさい好地こうち使用しよう支持しじ

这些其它“CSV”规范及实现的典型てんけい规则如下:

  • CSVぶんけん要求ようきゅう特定とくていてき编码节序あるくだり结束格式かくしきぼう些软けん支持しじ所有しょゆうぎょう结束变体)。
  • 一条记录结束于行结束符。しか而,ぎょう结束可能かのうさく为数すえ嵌入かんにゅういた段中だんなか所以ゆえん软件必须识别つつみ裹的ぎょう结束(见下じゅつ),以便从可能かのうてきぎょう中正ちゅうせい确组装一条完整的记录。
  • 所有しょゆう记录应当ゆうしょう同数どうすうあいどう顺序てきだん
  • 段中だんなかてきすうすえこぼし译为いち系列けいれつ,而不一系列比特或字节(见RFC 2046,section 4.1)。れい如,すう值量65535以被ひょう现为5个ASCII“65535”(ある其它形式けいしき如“0xFFFF”、“000065535.000E+00”とうとう);ただしかいさく为单个进制整数せいすうてき2序列じょれつ(而非两个らい处理。如果遵循这个“纯文ほんてき惯例,么该CSVぶんけん不能ふのう包含ほうがんあし够的しんいきらいせい确地こぼし译它,该CSVぶんけんはただい可能かのうざい不同ふどうてき电脑构间せい确传递,并且はた不能ふのうあずかtext/csv MIME类型保持ほじ一致いっち
  • あい邻字だん必须单个逗号ぶんへだた开。しか而,“CSV”格式かくしきざいぶんへだたてき选择じょう变化很大。とく别是ざいぼう区域くいき设置ちゅう逗号用作ようさく小数点しょうすうてん,则会使用しようぶんごうせいひょうある其它らい代替だいたい
1997,Ford,E350
  • にんなんだんつつみ使用しようそう引号)。ぼう些字だん必须つつみ裹,详见きさき续规则。
"1997","Ford","E350"
  • 如果だん包含ほうがん嵌入かんにゅうてき逗号,必须つつみ裹。
1997,Ford,E350,"Super, luxurious truck"
  • まい个被嵌入かんにゅうてきそう引号必须表示ひょうじ为两个双引号
1997,Ford,E350,"Super, ""luxurious"" truck"
  • 如果だん包含ほうがん嵌入かんにゅうてき换行,必须つつみ裹(しか而,许多简单てきCSV实现支持しじだんない换行)。
1997,Ford,E350,"Go get one now
they are going fast"
  • ざいぼう些CSV实现ちゅうおこり头和结尾てきそら格和かくわせいひょう截掉。这一实践是有争议的,也不符合ふごうRFC 4180。RFC 4180声明せいめいそらかくさくだんてきいち部分ぶぶん应当ゆるがせりゃく。”
1997, Ford, E350
not same as
1997,Ford,E350
  • しか而,该RFC并没ゆう说当空白くうはく现在つつみ裹的值之がい该如なん处理。
1997, "Ford" ,E350
  • ざい截掉おこり头和结尾そらかくてきCSV实现ちゅうはた这种そらかく视为有意ゆうい义数すえてきだん必须つつみ裹。
1997,Ford,E350," Super luxurious truck "
  • だい一条记录可以是“おもて头”,它在ごと个字段中だんなか包含ほうがんれつめい(并没有可ゆかもたれみちらい告知こくち一个文件是否这样包含表头;しか而,一般在列名中仅使用字母、数字すうじ划线,而不使用しよう其它)。
Year,Make,Model
1997,Ford,E350
2000,Mercury,Cougar

举例[编辑]

とし しなぱい かたごう 描述 价格
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格式かくしき表示ひょうじ如下:

Year,Make,Model,Description,Price
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ぶんけん小数点しょうすうてんてん,值分へだた逗号)举例:

Year,Make,Model,Length
1997,Ford,E350,2.34
2000,Mercury,Cougar,2.38

とくこく兰同样的CSV/DSVえいDelimiter separated valuesぶんけん小数点しょうすうてん逗号,值分へだたぶんごう)举例:

Year;Make;Model;Length
1997;Ford;E350;2,34
2000;Mercury;Cougar;2,38

きさきしゃてき格式かくしき遵循RFC 4180てきわかよう使つかい它遵循,使用しよう逗号代替だいたいぶんごうさく为分へだたあるもの使用しよう小数点しょうすうてん表示法ひょうじほうてきくに际符ごうあるものつつみ所有しょゆう包含ほうがん小数点しょうすうてんてき数字すうじ

应用ほどじょ支持しじ[编辑]

CSVぶんけん格式かくしき非常ひじょう简单,几乎所有しょゆうてき电子ひょうかくかずすえ管理かんり系統けいとう支持しじ。许多编程语言みやこ有可ゆか利用りようてき库来支持しじCSVぶんけん。许多实现支持しじ变换だんぶんへだた一些包裹约定以最大化接收者处理数据的机会,つきかん使用しようさい简单てき约定さい安全あんぜんてき

Microsoft Excelかい开.csvぶんけんただし赖于けい统的地区ちく设置,它可以使用しようぶんごうさく为分へだたらい代替だいたい逗号,这是よし于在ぼう些语ごとちゅう逗号用作ようさく小数点しょうすうてん。并且,Excelてき许多地区ちく版本はんぽん不能ふのうざいCSVちゅう处理Unicode。とうぐういた这种困难时,一个简单的解决方案是将文件扩展名从.csv变为.txtしかきさき从一个已经运行的Excelちゅうよう开”命令めいれい开文けん

とうねば贴文本数ほんすうすえいたExcelちゅう时,通常つうじょうせいひょう用作ようさくぶんへだた:如果你复せい“hello<tab>goodbye”いた剪贴ばんちゅう并把它粘贴到Excelちゅう,它会进入いた两个单元かくちゅう。“hello,goodbye”ねば贴进Excelかい进入いち个单もとかくちゅう包括ほうかつ逗号。如果您在Excelちゅう使用しようぶんほんいたれつこうのう并且あらため变设おけ,它同样为ねば贴进ぶん本数ほんすうすえあらため变设おけ

OpenOffice.org CalcLibreOffice Calc处理CSVぶんけん,并且どおり过一个ぶんほん导入对话かまちねば贴文ほん,对话かまち要求ようきゅうよう自己じこ指定していぶんへだた、编码、れつ格式かくしきとう

ざいUnixけい统上,ゆう许多工具こうぐほどじょいたりしょう以处ぼう些CSVぶんけん。许多此类こう具有ぐゆう办法あらため变分へだたただし很少のう支持しじにんなん其它变体(あるUnicode)。这些可用かようてきほどじょゆう

  • column
  • cut
  • paste
  • join
  • sort
  • uniq(-fらいとべ过比较前N个字だん

まいり[编辑]

註釋ちゅうしゃく[编辑]

  1. ^ れつひょう方式ほうしきてきI/O, Fortran 77语言参考さんこう资料英文えいぶん, Oracle, [2013-08-16], (原始げんし内容ないようそん档于2021-02-26) 
  2. ^ れい如Microsoft Word。
  3. ^ れい如LibreOffice 3.4てき.csv设置导入。
  4. ^ れい如,这一错误页面そん档备份そん互联网档あん英文えいぶん实际じょう记载りょうOpenOfficeLibreOfficeざい处理ぶん本字ほんじだんない换行てき不同ふどう
  5. ^ CSVぶんけんてき读写英文えいぶん. [2011ねん7がつ24にち]. (原始げんし内容ないようそん档于2012ねん10がつ22にち). ぼつゆう“CSV标准” 
  6. ^ Y. Shafranovich. 逗号ぶんへだた值(CSV)ぶんけんてき通用つうよう格式かくしきMIME类型英文えいぶん. [2011ねん9がつ12にち]. (原始げんし内容ないようそん档于2021ねん5がつ5にち). 

参考さんこう资料[编辑]

外部がいぶ链接[编辑]