Domanda Modifica del separatore di campo / delimitatore nel CSV esportato utilizzando Ruby CSV


È possibile cambiare il separatore di campo predefinito da una virgola a un altro carattere, ad es '|' per l'esportazione?


44
2018-01-27 21:03


origine


risposte:


Ecco un esempio usando invece una scheda.

In un file:

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

A una stringa:

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

Ecco la documentazione corrente su CSV: http://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html


92
2018-01-27 21:23



La precedente libreria CSV è stata sostituita con FasterCSV in Ruby 1.9.

require "csv"

output = CSV.read("test.csv").map do |row|
  row.to_csv(:col_sep => "|")
end
puts output

7
2017-07-18 17:12



CSV::Writer ha un metodo di generazione, che accetta una stringa di separazione come argomento.

#!/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

4
2018-01-27 21:12