當我有一個看起來像這樣的 csv 檔案時:
make,model,color,doors,email
dodge,charger,black,4,practice1@whatever.com
ford,focus,blue,5,practice2@whatever.com
nissan,350z,black,2,practice3@whatever.com
mazda,miata,white,2,practice4@whatever.com
honda,civid,brown,4,practice5@whatever.com
corvette,stingray,red,2,practice6@whatever.com
ford,fiesta,blue,5,practice7@whatever.com
bmw,m4,black,2,practice8@whatever.com
audi,a5,blue,2,practice9@whatever.com
subaru,brz,black,2,practice10@whatever.com
lexus,rc,black,2,practice11@whatever.com
當我嘗試運行我的代碼時,我不斷收到此錯誤,
data [:model]
^^^^
我想這不會像這樣作業,但我想知道是否有辦法使這項作業。我只是想讓程式輸出所有不同的模型。這是我的代碼:
require "csv"
CSV.foreach("cars.csv", headers: true) do |row|
data = puts row.to_h
end
data [:model]
puts data
我得到我的 csv 檔案,然后將其轉換為哈希并使其等于data
uj5u.com熱心網友回復:
您的資料變數未在回圈之外定義,并且有一個額外的空間。創建散列(行)的散列。
一種選擇可能是包含索引with_index并使用它來填充您之前創建的空哈希:
require "csv"
data = {}
CSV.foreach("cars.csv", headers: true).with_index do |row, i|
data[i] = row.to_h
end
pp data
結果:
{0=>
{"make"=>"dodge",
"model"=>"charger",
"color"=>"black",
"doors"=>"4",
"email"=>"[email protected]"},
... ,
... ,
... ,
10=>
{"make"=>"lexus",
"model"=>"rc",
"color"=>"black",
"doors"=>"2",
"email"=>"[email protected]"}}
分組資料的另一個選項是將 CSV 檔案讀入一個陣列,請參閱CSV.read檔案以便能夠按要求對資料進行分組。
在陣列上,您可以執行以下操作:
data.group_by { |d| d[:model] }
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/515541.html
標籤:红宝石CSV哈希
