我真的在努力掌握如何有效地使用FasterCSV来完成我想要的事情。
我有一个CSV文件;例如:
ID,day,site
test,tuesday,cnn.com
bozo,friday,fark.com
god,monday,xkcd.com
test,saturday,whatever.com我想要遍历这个文件,最后得到一个哈希,其中包含第一列出现的次数的计数器。所以:
["test" => 2, "bozo" => 1, "god" => 1]我需要能够做到这一点,而不需要事先知道第一列中的值。
发布于 2008-12-04 00:34:30
简单:
h = Hash.new(0)
FasterCSV.read("file.csv")[1..-1].each {|row| h[row[0]] += 1}在CSV.read中也是如此。
发布于 2008-12-03 23:35:06
我没有前面的代码,但我相信row.to_hash会这样做(其中row是当前记录的FasterCSV::Row )
顺便说一句,row.headers应该会给你一个头的数组。查看文档了解更多信息:http://fastercsv.rubyforge.org/classes/FasterCSV/Row.html
发布于 2009-09-30 11:10:30
我会使用foreach,并尊重nils -否则我会冒着“未定义的nil.+方法”错误的风险……
counter = {}
FasterCSV.foreach("path_to_your_csv_file", :headers => :first_row) do |row|
key=row[0]
counter[key] = counter[key].nil? ? 1 : counter[key] + 1
endhttps://stackoverflow.com/questions/339105
复制相似问题