Изменение разделителя / разделителя полей в экспортированном CSV с использованием Ruby CSV - PullRequest
49 голосов
/ 28 января 2011

Можно ли изменить разделитель полей по умолчанию с запятой на другой символ, например, '|' для экспорта?

Ответы [ 3 ]

102 голосов
/ 28 января 2011

Вот пример использования вкладки.

К файлу:

CSV.open("myfile.csv", "w", {:col_sep => "\t"}) do |csv|
  csv << ["row", "of", "CSV", "data"]
  csv << ["another", "row"]
  # ...
end

К строке:

csv_string = CSV.generate(:col_sep => "\t") do |csv|
  csv << ["row", "of", "CSV", "data"]
  csv << ["another", "row"]
  # ...
end

Вот текущая документация по CSV:http://ruby -doc.org / STDLIB / libdoc / CSV / RDoc / index.html

7 голосов
/ 18 июля 2012

Предыдущая библиотека CSV была заменена на FasterCSV в Ruby 1.9.

require "csv"

output = CSV.read("test.csv").map do |row|
  row.to_csv(:col_sep => "|")
end
puts output
4 голосов
/ 28 января 2011

CSV::Writer имеет метод генерирования, который принимает строку-разделитель в качестве аргумента.

#!/usr/bin/env ruby

# +++ ruby 1.8 version +++

require "csv"

outfile = File.open('csvout', 'wb')
  CSV::Writer.generate(outfile, '|') do |csv|
    csv << ['c1', nil, '', '"', "\r\n", 'c2']
  end
outfile.close
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...