2014-01-18 59 views
1

我的RB文件讀取:Ruby CSV文件解析,標題不會格式化?

require "csv" 
puts "Program1 initialized." 

contents = CSV.open "data.csv", headers: true 
contents.each do |row| 
    name = row[4] 
    puts name 
end 

...但是當我在Ruby中運行它,它不會加載該程序。它給了我關於報頭中的錯誤消息:

syntax error, unexpected ':', expecting $end 
contents = CSV.open "data.csv", headers: true 

所以我試着去弄清楚,爲什麼不會紅寶石讓我分析這個文件?我嘗試過使用其他csv文件,並且它不會加載,並給我一個錯誤消息。即時通訊只是爲了讓程序開始走向!我覺得它與標題有關。我更新儘可能多,介意你即時通訊使用紅寶石1.8.7。我讀了其他地方,我可以嘗試在irb中運行程序,但它似乎並不需要它。所以耶...提前感謝你!

+0

的'頭:TRUE'語法不1.8.7工作,你會想說':headers => true'。但是這並不能解決整個問題,因爲下面是撒米所說的。 –

+0

謝謝終於搞定了。我想我不得不更新紅寶石:/(noobnesss) – KnightKing

回答

2

由於您在Ruby 1.8.7中使用此功能,因此:headers => true將無法​​以此方式工作。 忽略了頭,讓你的數據是shift數據的第一行,這將是首部最簡單的方法:

require 'csv' 
contents = CSV.open("data.csv", 'r') 
contents.shift 

contents.each do |row| 
    name = row[4] 
    puts name 
end 

如果你想要使用標頭中的語法紅寶石1.8,你需要使用FasterCSV,類似這樣:

require 'fastercsv' 

FasterCSV.foreach("data.csv", :headers => true) do |fcsv_obj| 
puts fcsv_obj['name'] 
end 

(參見這個問題作進一步閱讀:Parse CSV file with header fields as attributes for each row