我能想到的唯一使用 CSV 类的方法是读取文件,然后用额外的列重写数据。让我们生成您的 CSV 数据:
csv = CSV.generate do |csv|
csv << ['header 1', 'header 2', 'header 3']
csv << ['summin 1', 'summin 2', 'summin 3']
csv << ['summin 4', 'summin 5', 'summin 6']
end
我们可以使用CSV.parse 对其进行迭代(尽管如果您正在从文件中读取,您可能希望使用CSV.foreach),并在块中创建新的 CSV 数据:
# Values for new column (including header)
new_values = ['header 4', 'new value 1', 'new value 2']
i = 0
CSV.parse(csv) do |row|
new_csv = CSV.generate do |new_csv|
new_csv << row + [new_values[i]]
i += 1
end
puts new_csv
end
上面的结果输出是您的最终 CSV:
header 1,header 2,header 3,header 4
summin 1,summin 2,summin 3,new value 1
summin 4,summin 5,summin 6,new value 2
请注意,在写入文件时,您需要使用CSV.open,而不是CSV.generate。