使用Ruby CSV更改导出CSV文件的字段分隔符/分隔符

69

在导出时,将默认的字段分隔符从逗号更改为其他字符(例如'|')是否可能?

3个回答

130

这里有一个使用制表符的示例。

写入文件:

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

该文档提供了有关如何在Ruby中使用CSV(逗号分隔值)的信息。CSV是一种常见的文件格式,用于存储和交换表格数据。该文档包括CSV库的说明、示例和参考资料。如果您需要在Ruby中处理CSV文件,这个文档对您非常有用。

10

在Ruby 1.9中,以前的CSV库被FasterCSV替换了。

require "csv"

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

5

CSV::Writer有一个generate方法,它接受一个分隔符字符串作为参数。

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

3
这仅适用于 Ruby 1.8,在 1.9 中它们摆脱了 Writer 类。 - Dylan Markow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接