这有效但由于某种原因,逗号丢失了.data插入为
GAURISH SHARMA
97
69
69
975
PASS
Run Code Online (Sandbox Code Playgroud)
将每个值写在新行中.我想知道逗号在哪里?或者那些必须手动插入?
我正在尝试使用以下代码编写哈希值
CSV.open("resultdata.csv", "a") do |csv|
h.each do |key, value|
csv << value
end
end
Run Code Online (Sandbox Code Playgroud)
这是h哈希的内容
{:name=>"GAURISH SHARMA",
:ca=>"97",
:cb=>"69",
:ba_lab=>"69",
:bb_lab=>"69",
:grand_total=>"975",
:result=>"PASS"}
Run Code Online (Sandbox Code Playgroud)
此代码看起来正确,但在运行此代码时,会生成以下错误:
/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>'
Run Code Online (Sandbox Code Playgroud)
知道这里有什么问题吗?
ste*_*lag 11
执行此操作时csv << value,您正在将字符串写入文件.CSV库可以将数组写入文件(以某种形式).从散列中获取包含所有值的数组的最佳方法是使用values方法btw.所以:
require 'csv'
h = {:name=>"GAURISH SHARMA",
:ca=>"97",
:cb=>"69",
:ba_lab=>"69",
:bb_lab=>"69",
:grand_total=>"975",
:result=>"PASS"}
CSV.open("resultdata.csv", "a") do |csv|
csv << h.values
end
Run Code Online (Sandbox Code Playgroud)
resultdata.csv看起来像
GAURISH SHARMA,97,69,69,69,975,PASS
Run Code Online (Sandbox Code Playgroud)
Luc*_*ira 10
放入value一个数组,如下所示:
CSV.open("resultdata.csv", "a") do |csv|
h.each do |key, value|
csv << [value]
end
end
Run Code Online (Sandbox Code Playgroud)
EDITED
每次使用csv << ["foo"]它都会在新行中插入"foo".但是如果你这样做,csv << ["foo", "foo", "foo"]你会在同一行中得到3个"foo",用逗号分隔.
知道这一点,首先尝试将所有值存储在数组中,然后使用csv << your_values_array.这将解决您的问题.
| 归档时间: |
|
| 查看次数: |
8353 次 |
| 最近记录: |