首页 > 解决方案 > 在 CSV 中用双引号写入字符串的问题

问题描述

我将使用csv gem 在 CSV 中用双引号写一个字符串。

CSV.open(source_filename, "wb") do |csv|
  csv << ["NAME", "AGE"]
  csv << ["Oleg", 15]
end

结果是

NAME,AGE
Oleg,15

我想写的是

NAME,AGE
"Oleg","15"

有没有这样写的方法?

标签: ruby-on-railsrubyruby-on-rails-5

解决方案


如果您不想在值中使用文字引号,而只是想用引号将所有值包装起来,您可以通过设置force_quotes选项来做到这一点:

csv = CSV.generate(force_quotes: true) do |csv|
  csv << ["NAME", "AGE"]
  csv << ["Oleg", 15]
end

puts csv

印刷:

"NAME","AGE"
"Oleg","15"

generate在此答案中使用以简化复制/粘贴代码。您可以使用与 相同的选项open。这便成为CSV.open(source_filename, "wb", force_quotes: true)

但是,当 CSV 实现读取上述内容时,引号将不是值的一部分。tadman的回答进一步解释了这一点。


推荐阅读