首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RoR: FasterCSV to hash

RoR: FasterCSV to hash
EN

Stack Overflow用户
提问于 2008-12-03 23:16:50
回答 4查看 4.3K关注 0票数 2

我真的在努力掌握如何有效地使用FasterCSV来完成我想要的事情。

我有一个CSV文件;例如:

代码语言:javascript
复制
ID,day,site
test,tuesday,cnn.com
bozo,friday,fark.com
god,monday,xkcd.com
test,saturday,whatever.com

我想要遍历这个文件,最后得到一个哈希,其中包含第一列出现的次数的计数器。所以:

代码语言:javascript
复制
["test" => 2, "bozo" => 1, "god" => 1]

我需要能够做到这一点,而不需要事先知道第一列中的值。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-12-04 00:34:30

简单:

代码语言:javascript
复制
h = Hash.new(0)
FasterCSV.read("file.csv")[1..-1].each {|row| h[row[0]] += 1}

在CSV.read中也是如此。

票数 5
EN

Stack Overflow用户

发布于 2008-12-03 23:35:06

我没有前面的代码,但我相信row.to_hash会这样做(其中row是当前记录的FasterCSV::Row )

顺便说一句,row.headers应该会给你一个头的数组。查看文档了解更多信息:http://fastercsv.rubyforge.org/classes/FasterCSV/Row.html

票数 0
EN

Stack Overflow用户

发布于 2009-09-30 11:10:30

我会使用foreach,并尊重nils -否则我会冒着“未定义的nil.+方法”错误的风险……

代码语言:javascript
复制
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
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/339105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档