Ruby 的内置 CSV 类是您的起点。来自the documentation 用于写入 CSV 文件:
CSV.open("path/to/file.csv", "wb") do |csv|
csv << ["row", "of", "CSV", "data"]
csv << ["another", "row"]
# ...
end
对于您的代码,只需展平您的数组:
[['a'], ['b']].flatten # => ["a", "b"]
然后您可以将它分配给块的参数(csv),这将导致将数组写入文件:
require 'csv'
CSV.open('file.csv', 'wb') do |csv|
csv << [["row"], ["of"], ["CSV"], ["data"]].flatten
end
保存并运行创建“file.csv”,其中包含:
row,of,CSV,data
您的问题是以这样一种方式编写的,听起来您正在尝试手动生成 CSV 文件,而不是依赖于为该特定任务设计的类。从表面上看,创建 CSV 似乎很容易,但是当字符串包含空格 和 用于分隔字符串的引号字符时,它有一些令人讨厌的极端情况和需要处理的问题。一个经过良好测试的预写类可以为您节省大量编写和调试代码的时间,或者让您不必向客户或经理解释为什么您的数据无法正确加载到数据库中。
但这留下了一个问题,为什么你的数组包含子数组?通常这是因为你在收集元素时做错了什么,这让我认为你的问题应该是关于如何避免这样做。 (称为XY problem。)