|
|
|
|
|
CSV(Comma-Separated Values 逗號(hào)分隔值格式) 用于在各種電子表格程序之間交換和轉(zhuǎn)換數(shù)據(jù),今天介紹一下常用的CSV文件格式標(biāo)準(zhǔn)——RFC4180。
CSV 格式?jīng)]有正式的規(guī)范存在,它允許各種各樣的CSV文件的解釋。本節(jié)記錄了大多數(shù)都遵循的格式規(guī)范:
1、每條記錄單獨(dú)一行,用一行分隔中斷(CRLF)。例如:
aaa,bbb,ccc CRLF
zzz,yyy,xxx CRLF
2、文件中的最后一條記錄可能有也可能沒(méi)有結(jié)束行中斷。例如:
aaa,bbb,ccc CRLF
zzz,yyy,xxx
3、可能有一個(gè)可選的標(biāo)題行出現(xiàn)在第一行,與普通記錄行具有相同格式。這標(biāo)頭將包含與文件中的字段對(duì)應(yīng)的名稱,并且應(yīng)該包含與文件其余部分中的記錄相同數(shù)量的字段(標(biāo)題行的存在與否應(yīng)該通過(guò)這個(gè)可選的MIME類型的“header”參數(shù)來(lái)指示)。例如:
字段名,字段名,字段名 CRLF
aaa,bbb,ccc CRLF
zzz,yyy,xxx CRLF
4、表頭和每條記錄內(nèi),可能有一個(gè)或多個(gè)字段,以逗號(hào)分隔。每行應(yīng)包含相同的整個(gè)文件的字段數(shù)??崭癖徽J(rèn)為是字段的一部分,不應(yīng)該被忽視。記錄后面中的最后一個(gè)字段不能跟逗號(hào)。例如:
aaa,bbb,ccc
5、每個(gè)字段可以用也可以不用雙引號(hào)括起來(lái)(但是一些程序,例如 Microsoft Excel,根本不使用雙引號(hào))。如果字段沒(méi)有用雙引號(hào)引起來(lái),那么雙引號(hào)不能出現(xiàn)在字段內(nèi)。例如:
"aaa","bbb","ccc" CRLF
zzz,yyy,xxx
6、包含換行符(CRLF)、雙引號(hào)和逗號(hào)的字段應(yīng)該用雙引號(hào)括起來(lái)。例如:
"aaa","b CRLF
bb","ccc" CRLF
zzz,yyy,xxx
7、如果用雙引號(hào)括起字段,那么一個(gè)雙引號(hào)出現(xiàn)在字段內(nèi)必須通過(guò)在其前面加上另一個(gè)雙引號(hào)。例如:
"aaa","b""bb","ccc"
示例
下面是一個(gè)符合復(fù)雜標(biāo)準(zhǔn)的 CSV 文件的示例:
Year,Make,Model,Description,Price
1997,Ford,"E350
F150","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
1999,BMW,Z3,"used",14900.00
1999, Toyota,Corolla,,7000.00
如上所見(jiàn),有些行是多行的并且包含引號(hào)和逗號(hào),這將給出下表:
年 | 制作 | 模型 | 描述 | 價(jià)格 |
---|---|---|---|---|
1997 | Ford | E350 F150 | ac, abc, 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 |
1999 | BMW | Z3 | used | 14900.00 |
1999 | Toyota | Corolla | 7000.00 |
如上所見(jiàn),有些列是多行的,最后一行的“ Toyota”列以空格開(kāi)頭。