如何解析Ruby中的CSV文件中的列并将其存储为数组?

时间:2010-07-13 13:40:39

标签: ruby csv

我有以下CSV文件:

Date,Av,Sec,128,440,1024,Mixed,,rule,sn,version

6/30/2010,3.40,343,352.0,1245.8,3471.1,650.7,Mbps,on,s-2.8.6-38,4.9.1-229,,vs. 342,-0.26%,-0.91%,1.51%,-0.97%
6/24/2010,3.40,342,352.9,1257.2,3419.5,657.1,Mbps,on,s-2.8.6-38,4.9.1-229,,vs. 341,0.23%,0.50%,-1.34%,0.67%
6/17/2010,3.40,341,352.1,1251.0,3466.1,652.7,Mbps,on,s-2.8.6-38,4.9.1-229,,vs. 340,7.77%,5.32%,9.04%,1.71%
6/14/2010,3.40,340,326.7,1187.8,3178.7,641.7,Mbps,on,s-2.8.6-38,4.9.1-229,,vs. 339,-0.88%,-0.34%,-0.95%,0.05%
6/11/2010,3.40,339,329.6,1191.9,3209.2,641.4,Mbps,on,s-2.8.6-38,4.9.1-229,,vs. 338,0.58%,0.51%,-1.83%,0.99%
6/11/2010,3.40,338,327.7,1185.8,3269.1,635.1,Mbps,on,s-2.8.6-38,4.9.1-229,,vs. 335,-0.40%,-0.44%,1.46%,-1.96%
6/11/2010,3.40,335,329.0,1191.0,3221.9,647.8,Mbps,on,s-2.8.6-38,4.9.1-229,,vs. 333,-6.83%,-4.70%,-7.04%,-0.32%
6/11/2010,3.40,333,353.1,1249.8,3465.8,649.9,Mbps,on,s-2.8.6-38,4.9.1-229,,vs. 332,2.53%,2.02%,1.71%,2.14%

我想解析第4,5,6和7列并且有四个数组,我可以在其上执行操作,比如创建一个与时间相关的折线图等。

4 个答案:

答案 0 :(得分:4)

你需要Ruby附带的Ruby CSV module。例如:

require 'csv'
require 'pp'

file = File.open( 'bar.csv' )
CSV::Reader.create( file ).each do |row|
  pp row[4..7]
end

答案 1 :(得分:0)

为什么重新发明轮子!

使用插件fastercsvcsv

答案 2 :(得分:0)

您可以选择使用Ruby解析CSV,因为标准库中包含选项,以及简单的自制方法或开源库。

您可以从“How to parse CSV data with Ruby”上的示例开始,这应该指向深入挖掘的方向。

答案 3 :(得分:0)

您可以使用smarter_csv Ruby gem并使用:key_mapping来忽略不需要的输入列。

请参阅:

https://github.com/tilo/smarter_csv