有没有办法让 Ruby CSV gem 生成带有 Windows (CR LF) 行尾的 CSV?
Is there a way to make Ruby CSV gem generate CSVs with Windows (CR LF) End Of Lines?
出于某种原因,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
提前感谢您的任何想法,新年快乐!
正如 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 标准库。
出于某种原因,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
提前感谢您的任何想法,新年快乐!
正如 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 标准库。