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.

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 Gray II

···

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.

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 1:55 PM, Junkone <junkone1@gmail.com> 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.

thanks for the help in advance.

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}

···

On Nov 28, 2007 2:25 PM, Christian von Kleist <cvonkleist@gmail.com> wrote:

On Nov 28, 2007 1:55 PM, Junkone <junkone1@gmail.com> 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.
>
> 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.