ruby csv file

来源:互联网 发布:ckplayer m3u8源码 编辑:程序博客网 时间:2024/05/21 17:22
 

CSV文件介绍

   supermgr

简介
CSV全称 Comma Separated values,是一种用来存储数据的纯文本
文件格式,通常用于电子表格或数据库软件。

规则

0 开头是不留空,以行为单位。
1 可含或不含列名,含列名则居文件第一行。
2 一行数据不垮行,无空行。
3 以半角符号,作分隔符,列为空也要表达其存在。
4 列内容如存在,,则用“”包含起来。
5 列内容如存在“”则用“”“”包含。
6 文件读写时引号,逗号操作规则互逆。
7 内码格式不限,可为ASCII、Unicode或者其他。
 ______________________________________________

from IT wiki

CSV其实就是COMMA SEPARATED VALUE的缩写,出现在档案总管中的档案类型是「逗号分格」,依计算机原来的设定,如果直接点选该档案,计算机将以EXCEL的模式开启该档案。 但建议您千万不要这么做,因为CSV档如果以EXCEL开启,由于计算机档案数据转换的原因,会将其CRC之数值改做科学记号方式储存,而造成档案中的CRC值发生错误。 这也是笔者初出茅庐时所得到的惨痛经验,但如果想一窥CSV档的真实面貌,笔者建议您使用WORDPAD或是记事本(NOTE)来开启,再则先另存新档后用EXCEL开启,也是方法之一。 开启后的CSV档包含了四或五个字段(部分),由左至右分别记载着:文件名称(XXXX.JPG)、档案大小(以BYTE为单位)、CRC32值(八个英文字母或数字组成)、档案路径(档案储存的子目录名称)和档案内容描述(一般来说都是明星的英文姓名甚或是专辑名称,也可能空白)。 而其中第四栏「档案路径」因为每个人储存整理图档的方式不同,所以本栏通常不存在,而一般有含有「档案路径」这栏的CSV档,又称为ECSV档案

取自"http://wiki.ccw.com.cn/CSV"

ruby 读写CSV文件

 

require 'CSV'
CSV.open('data.csv','w') do |data|
  data<<['name','ext','room']
  data<<['Al','123','1']
  data<<['Ed','122','2']
  data<<['Ann','121','3']
end

data.csv的内容:
name,ext,room
Al,123,1
Ed,122,2
Ann,121,3

require 'csv'
print 'enter a csv file to print '
filename=gets.chomp
CSV.open(filename,
'r') do |data|

  p data
end


C:/Users/linda/Documents>ruby write_csv.rb
enter a csv file to print write.csv
["1", "2.392857143"]
["2", "4.785714286"]
["3", "7.178571429"]
["4", "9.571428571"]
["5", "11.96428571"]
["6", "14.35714286"]
["7", "16.75"]
["8", "19.14285714"]
["9", "21.53571429"]
["10", "23.92857143"]
["11", "26.32142857"]
["12", "28.71428571"]
["13", "31.10714286"]
["14", "33.5"]
["15", "35.89285714"]
["16", "38.28571429"]
["17", "40.67857143"]
["18", "43.07142857"]
["19", "45.46428571"]

CSV::open

 

------------------------------------------------------------- CSV::open
CSV::open(path, mode, fs 
= nil, rs = nil, &
block)
-----------------------------------------------------------------------

Open a CSV formatted file 
for reading or writing.

For
 reading.

EXAMPLE 
1


  CSV.open(
'csvfile.csv', 'r') do |row|
    p row
  
end


EXAMPLE 
2

  reader 
= CSV.open('csvfile.csv', 'r')
  row1 = reader.shift
  row2 
=
 reader.shift
  
if
 row2.empty?
    p 
'row2 not find.'

  end
  reader.close

ARGS

  filename: filename 
to parse.
  col_sep: Column separator.  ?, by 
default.  If you want to
 separate
    fields 
with
 semicolon, give ?; here.
  row_sep: Row separator.  nil by 
default.  nil means "  or  ".  If
 you
    want 
to separate records with r, give ?
r here.

RETURNS

  reader instance.  
To get parse result, see CSV::Reader#each
.

For
 writing.

EXAMPLE 
1


  CSV.open(
'csvfile.csv', 'w') do |writer|
    writer << ['r1c1', 'r1c2']
    writer << ['r2c1', 'r2c2']
    writer << [nil, nil]
  
end


EXAMPLE 
2

  writer 
= CSV.open('csvfile.csv', 'w')
  writer << ['r1c1', 'r1c2'] << ['r2c1', 'r2c2'] << [nil, nil]
  writer.close

ARGS

  filename: filename 
to
 generate.
  col_sep: Column separator.  ?, by 
default.  If you want to
 separate
    fields 
with
 semicolon, give ?; here.
  row_sep: Row separator.  nil by 
default.  nil means "  or  ".  If
 you
    want 
to separate records with r, give ?
r here.

RETURNS

  writer instance.  See CSV::Writer#
<< and CSV::Writer#add_row to
 know how
  
to generate CSV string
.