加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用于CSV :: open#<<的Ruby未定义方法`map'(NoMeth

发布时间:2020-12-17 01:54:24 所属栏目:百科 来源:网络整理
导读:这有效但由于某种原因,逗号丢失了.数据插入为 GAURISH SHARMA976969975PASS 将每个值写在新行中.我想知道逗号在哪里?或者那些必须手动插入? 我正在尝试使用以下代码编写哈希值 CSV.open("resultdata.csv","a") do |csv| h.each do |key,value| csv value e
这有效但由于某种原因,逗号丢失了.数据插入为

GAURISH SHARMA
97
69
69
975
PASS

将每个值写在新行中.我想知道逗号在哪里?或者那些必须手动插入?

我正在尝试使用以下代码编写哈希值

CSV.open("resultdata.csv","a") do |csv|    
  h.each do |key,value|
    csv << value
  end
end

这是h哈希的内容

{:name=>"GAURISH SHARMA",:ca=>"97",:cb=>"69",:ba_lab=>"69",:bb_lab=>"69",:grand_total=>"975",:result=>"PASS"}

此代码看起来正确,但在运行此代码时,会生成以下错误:

/home/gaurish/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/csv.rb:1729:in `<<': undefined method `map' for "GAURISH SHARMA":String (NoMethodError)
    from /home/gaurish/Dropbox/code/projects/ra/result.rb:35:in `block (2 levels) in <main>'
    from /home/gaurish/Dropbox/code/projects/ra/result.rb:34:in `each'
    from /home/gaurish/Dropbox/code/projects/ra/result.rb:34:in `block in <main>'
    from /home/gaurish/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/csv.rb:1354:in `open'
    from /home/gaurish/Dropbox/code/projects/ra/result.rb:33:in `<main>'

知道这里有什么问题吗?

解决方法

当你做csv<< value,您正在将字符串写入文件.
CSV库可以将数组写入文件(以某种形式).从散列中获取包含所有值的数组的最佳方法是使用值方法btw.所以:

require 'csv'
h = {:name=>"GAURISH SHARMA",:result=>"PASS"}

CSV.open("resultdata.csv","a") do |csv|    
  csv << h.values
end

resultdata.csv看起来像

GAURISH SHARMA,97,69,975,PASS

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读