有没有办法让Ruby CSV gem生成带有Windows的CR(CR LF)End Of Lines?

时间:2017-12-30 16:49:12

标签: ruby windows csv rubygems eol

出于某种原因,CSV gem正在使用Unix EOL生成CSV(请参见屏幕截图): https://www.dropbox.com/s/4re7tpp4pj9psov/ice_screenshot_20171230-162304.png?dl=0 在Notepad ++中查看的截图(查看所有字符)

我使用的代码:

require 'csv'

all_the_things = []

all_the_things << ["item1.1","item1.2","item1.3"]
all_the_things << ["item2.1","item2.1","item2.1"]
all_the_things << ["item3.1","item3.1","item3.1"]

CSV.open("test.csv", "wb" ) do |row|
  row << ["Column1", "Column2", "Column3"] #just headers
    all_the_things.each do |data|
      row << data
    end
end

有没有办法让它使用Windows EOL(CR LF)而不是UNIX(LF)?

我正在使用Windows 10,如果我只是将一些行输出到文件使用一切正常工作(直接管理没有CSV gem的正确数据结构是噩梦):

....
   File.open("test.csv", "w") do |line|
    myarray.each do |data|
      line.puts data
    end
end

提前感谢您的任何想法和新年快乐!

1 个答案:

答案 0 :(得分:2)

如明确说明in the documentation,可以使用row_sep选项指定行分隔符:

require 'csv'
#                               ⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓ here
CSV.open("/tmp/file.csv", "wb", row_sep: "\r\n") do |csv|
  csv << %w|1 2 3 4|
  csv << %w|a b c d|
end

此外,没有“CSV gem”,它是ruby标准库。