Заключать в кавычки все поля в выходных данных CSV

#ruby #csv

#ruby #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», «тест»

Комментарии:

1. Возможно, вы захотите проверить FasterCSV fastercsv.rubyforge.org . В нем есть опция для указания символа кавычки. Я полагаю, что это будет программа чтения / записи CSV по умолчанию в Ruby 1.9.

2. @Rob FasterCSV — это CSV библиотека, которая поставляется в стандартной библиотеке с версией 1.9 (и уже давно).

Ответ №1:

Изменить

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

Для

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

Комментарии:

1. Если вы используете Ruby 1.8.x, я бы последовал совету @Rob Di Marco и установил FasterCSV. Он заменил CSV в 1.9.x

2. @vasu Какую версию Ruby вы используете?

Ответ №2:

Так почему бы не заключить их в двойные кавычки?

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

Комментарии:

1. «»»01″»»,»»»02″»»,»»» проверьте «»» это выходные данные при открытии csv, если вы заключаете их в двойные кавычки