【发布时间】:2016-10-07 04:57:52
【问题描述】:
我有一个名为 info 的数组,我想将每一行添加到 CSV,但我还想在文件顶部包含标题。
我这样做了:
info.each do |listing|
CSV.open(csvfile, "a+", write_headers: true, headers: ["Company_Name","Website","Street_Address", "City", "State", "Zip", "Phone","Email"]) do |csv|
csv << listing
end
end
但这会产生如下所示的内容:
这不是我想要的。
我只想要顶部的 1 个标题行。
我如何做到这一点?
编辑 1
我实际上有另一个嵌套循环也有同样的问题,但我不能简单地将它移出循环 - 那我还能如何解决这个问题?
csvs.each do |csv|
CSV.foreach(csv, headers: true) do |row|
#check for presence of valid email
if (!row['Email'].nil?) && (!row['Email'].include? "no email")
CSV.open(new_csv, "a+", write_headers: true, headers: ["Company_Name","Website","Street_Address", "City", "State", "Zip", "Phone","Email"]) do |new_csv_row|
new_csv_row << row
puts "#{row['Email']} successfully added to #{new_csv}"
end
end
end
end
【问题讨论】:
-
将
CSV.open移出info.each循环。 -
当然!呸!愚蠢的我。完美,这就像一个魅力。您能否将其添加为答案,我会接受。谢谢!
-
@slowjack2k 实际上我还有 1 个用例发生这种情况。我已经更新了这个问题,所以您能否在添加答案之前查看它并提出解决方案以确保它是完整的。谢谢!