问题 引用CSV输出中的所有字段


@out = File.open("#{File.expand_path("CSV")}/#{file_name}.csv", "w")
CSV::Writer.generate(@out) do |csv|
  csv << ["01", "02", "test"]
end
@out.close

当我运行上面的代码时,它将值存储在CSV中

01,02。测试

我希望他们存储为

“01”,“02”,“测试”


907
2018-04-29 11:24


起源

您可以查看FasterCSV fastercsv.rubyforge.org 。它可以选择指定引号字符。我相信它将成为Ruby 1.9中的默认CSV读取器/写入器。 - Rob Di Marco
@Rob FasterCSV 是 该 CSV 带有1.9的标准库中的库(现在已经有很长一段时间了)。 - Phrogz


答案:


更改

CSV::Writer.generate(@out)do |csv|

CSV::Writer.generate(@out, {:force_quotes=>true}) do |csv|

19
2018-04-29 12:40



我得到“类型不匹配:哈希给定”错误 - vasu
如果您使用的是Ruby 1.8.x,我会遵循@Rob Di Marco的建议并安装FasterCSV。它在1.9.x中替换了CSV - steenslag
@vasu你使用的是什么版本的Ruby? - Phrogz
@Phrogz Ruby 1.8.7企业版 - vasu
@vasu然后你应该使用 FasterCSV。 - Phrogz


那么为什么不加倍引用呢?

@out = File.open("#{File.expand_path("CSV")}/#{file_name}.csv", "w")
CSV::Writer.generate(@out) do |csv|
  csv << ['"01"', '"02"', '"test"']
end
@out.close

-3
2018-04-29 11:34



“”“01”“”,“”“02”“”,“”“test”“”这是你打开csv的输出,如果你加倍引用它们 - vasu