2011-02-16 13 views
0

私は暇な時間にRubyを学んでいます。私はラップトップにLinux Mint 10 Virtual Machineをインストールしました。Rubyの世界に少し役立つ?

私は基本的なRuby構造のほとんどをダウンさせましたが、実際にテストするために、実際に何かを構築したいと思います。

私の最初のプロジェクトでは、CSVファイルを解析し、情報をコード内の配列に保存したいと考えています。

十分に簡単ですか?

グーグルでは、私が使用する必要があると思われるこのライブラリが見つかりました。 https://github.com/fauna/ccsv

私はこれをどのように使用しますか?私は.dllをダウンロードするC#/ .Netの世界から来ています(最近ではNuGetを使用しています)。これはプロジェクトに参照されます。

Rubyで何をする必要がありますか?誰も私の中を歩くことができますか?私はこの言語にまったく新しいので、何も想定しないようにしてください。私はまだそれを知ることができません。御時間ありがとうございます。

答えて

2

Rubyにはデフォルトのcsvライブラリがあり、私はhttp://snippets.dzone.com/posts/show/3899にある関数を使ってcsvを解析します。

require 'csv' 
    def parse(file) 
    csv_data = CSV.read file 
    headers = csv_data.shift.map {|i| i.to_s } 
    string_data = csv_data.map {|row| row.map {|cell| cell.to_s } } 
    string_data.map {|row| Hash[*headers.zip(row).flatten] } 
    end 

    myHash = parse('myfile') 

OOPなしでルビを実行する場合は、関数定義を呼び出すコードの前に移動する必要があります。

あなたはターミナルで行うだろう、あなたの最初の質問に答えるために:

gem install ccsv 

次に、あなたのコード内で:

require 'ccsv' 
3

私はルビーでは、それはあまりないです、という怖いですプロジェクトの

require 'csv' 
data = CSV.read('test.csv') 

p data 
#=> [["letters", "numbers"], ["a", "3"], ["b", "2"], ["d", "4"]] 

やや複雑:

data = CSV.read('test.csv',{:headers=>true}) 
puts data['numbers'][0] #=> 3 

この{:ヘッダ はあなたがこのようにそれを解析することができます。このコンテンツ

letters,numbers 
a,3 
b,2 
d,4 

とファイル 'のtest.CSV' を持っていると仮定します=> true}はブロックのように見えますが、ハッシュです。 CSVは、共通のパターンであるハッシュであらゆる種類のパラメータを取ります。

関連する問題