Ruby csv标签打印解决方案

时间:2014-11-06 04:15:41

标签: ruby file csv hash comma

将结果打印到选项卡中的csv文件时出现问题

prod = { "name": "Georeous,elements,are upcoming,this year","desc":"hi"}

p = prod
File.open("file.csv","wb") do |f|
p.each do |s|
f.print "#{s["name"]}\t"
f.print "#{s["desc"]}\t"
end
end

在上面的代码中,prod哈希有一个名称键,其值由逗号分隔

请注意我的代码正在编写的逗号

name       desc
Georeous   elements  are upcoming  this year     hi

但我希望将其打印为

name                                         desc
Georeous,elements,are upcoming,this year     hi

1 个答案:

答案 0 :(得分:1)

如果您仍然对此问题感兴趣,可能的解决方案是引用生成的CSV中的单元格。这应告诉您稍后打开文件的电子表格应用程序忽略单元格中的逗号。

name    desc
"Georeous,elements,are upcoming,this year"  "hi"

此外,您之前的代码存在一些问题。一个问题是prod是Hash而不是数组,所以s不是包含键的Hash" name"和" desc"。

products = [
  {"name" => "Georeous,elements,are upcoming,this year",
   "desc" => "hi"},
  {"name" => "Rose",
   "desc" => "a rose by any other name"}
]

File.open("file.csv", "w") do |f|
  f.puts "name\tdesc"
  products.each do |product|
    f.print "\"#{product["name"]}\"\t"
    f.print "\"#{product["desc"]}\"\n"
  end
end