2009-11-02 51 views
0

我想獲得更快的CSV設置,這樣,而不是解析每一行,它會將每列放入一個多數組。FasterCSV:列成陣列 - 導軌

CSV import file: 
id, first name, last name, age 
1, joe, smith, 11 
2, jane, doe, 14 

Save to array named people: 
people[0][0] would equal id 
people[2][1] would equal jane 

這是我目前有:

url = 'http://url.com/file.csv' 
open(url) do |f| 
    f.each_line do |line| 
    FasterCSV.parse(line) do |row| 
     row 
    end 
    end 
end 

任何幫助表示讚賞。

+0

爲什麼一個多維數組?一串哈希有什麼問題,它更好讀。 – 2009-11-02 11:48:58

+0

我想爲每個列設置一個多維數組,因爲我不需要將數據存儲在活動記錄中,也不知道列名是什麼,我想從數組中獲取一個xml文件它使每個列的名稱將是每列的屬性...如果這是有道理的:) – Jeffrey 2009-11-02 16:05:26

回答

0

感謝EMFI,在您的幫助,我能夠拿出用解決方案。

這需要一個遠程URL csv文件,並根據列將其加載到多維數組中。

require 'rio' 
require 'fastercsv' 

url = 'http://remoteurl.com/file.csv' 
people = FasterCSV.parse(rio(url).read) 
3

你看了FasterCSV documentation?

如果你做了,你就會知道,最簡單的方法做你想做的是:

people = FasterCSV.read('http://url.com/file.csv') 
+0

無法獲得一個網址打開FasterCSV.read – Jeffrey 2009-11-02 15:57:03

+0

也試圖讀取本地文件,我得到一個編譯錯誤: 「奇數號碼列表的散列「 – Jeffrey 2009-11-02 15:58:52

+0

奇數號碼列表的散列應該與FasterCSV無關。你有使用大括號來擋住你的if塊嗎? – EmFi 2009-11-02 16:21:15