Csv help

hello
Here is a extract of csv file that i use
Ticker,Trade,Date,Price
FLWS,Long,01/08/2007 2:00:00 PM,9.05

It will always have only 2 rows. How can i load it as a hash so that i
get access it like
hashvar[“Ticker”] …
It there an existing api or do i have to load it as csv and then looop
thro the array and create the hash.

thanks for the help in advance.

On Nov 28, 2007, at 12:55 PM, Junkone wrote:

hello
Here is a extract of csv file that i use
Ticker,Trade,Date,Price
FLWS,Long,01/08/2007 2:00:00 PM,9.05

It will always have only 2 rows. How can i load it as a hash so that i
get access it like
hashvar[“Ticker”] …
It there an existing api or do i have to load it as csv and then looop
thro the array and create the hash.

FasterCSV can do it for you:

#!/usr/bin/env ruby -wKU

require “rubygems”
require “faster_csv”

csv = <<END_CSV
Ticker,Trade,Date,Price
FLWS,Long,01/08/2007 2:00:00 PM,9.05
END_CSV

data = FCSV.parse(csv, :headers => true)[0].to_hash
p data

>> {“Trade”=>“Long”, “Date”=>“01/08/2007 2:00:00 PM”,

“Price”=>“9.05”, “Ticker”=>“FLWS”}

END

Hope that helps.

James Edward G. II

On Nov 28, 2007 1:55 PM, Junkone [email protected] wrote:

thanks for the help in advance.

If the file is always two lines and the format is always the same, I’d
do:

data = {}
lines = File.readlines.collect {|line| line.chomp}
lines[0].each {|header| data[header] = lines[1].shift}

But you could use a CSV gem instead.

On Nov 28, 2007 2:25 PM, Christian von Kleist [email protected]
wrote:

It there an existing api or do i have to load it as csv and then looop
lines[0].each {|header| data[header] = lines[1].shift}

But you could use a CSV gem instead.

Oops, bad mistakes in that little snippet. Here we go:

data = {}
lines = File.readlines(‘data.csv’).collect {|line|
line.chomp.split(‘,’)}
lines[0].each {|header| data[header] = lines[1].shift}