Changing field separator/delimiter in exported CSV using Ruby CSV

前端 未结 3 1750
长发绾君心
长发绾君心 2020-12-14 14:19

Is it possible to change the default field separator from comma to to some other character, e.g \'|\' for exporting?

相关标签:
3条回答
  • 2020-12-14 15:00

    The previous CSV library was replaced with FasterCSV in Ruby 1.9.

    require "csv"
    
    output = CSV.read("test.csv").map do |row|
      row.to_csv(:col_sep => "|")
    end
    puts output
    
    0 讨论(0)
  • 2020-12-14 15:03

    CSV::Writer has a generate method, which accepts a separator string as argument.

    #!/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
    
    0 讨论(0)
  • 2020-12-14 15:11

    Here's an example using a tab instead.

    To a file:

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

    To a string:

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

    Here's the current documentation on CSV: http://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html

    0 讨论(0)
提交回复
热议问题