如何在CSV中的每一行的新列中添加数据?

时间:2016-10-23 02:05:05

标签: ruby csv

所以我有一个看起来像这样的方法:

  csvs = Dir["#{@dir_name}/#{@state}/*.csv"]

  csvs.each do |csv|
    city = csv.split(/[\/]|.csv-updated|.csv/).last
    CSV.foreach(csv, headers: true) do |row|
      temp = extract_email(row['Website'])
      # add result from temp above to existing row
    end
  end

基本上我想要做的是,在我在CSV中处理的每个row上,我想对row['Website']中的数据执行某些操作(在temp中表示为driver.get()上面的代码段,然后我想获取结果并将其作为新列添加到该行。

所以基本上我想追加到每一行。我该怎么做?

1 个答案:

答案 0 :(得分:0)

我想出来了。

基本上,我无法像这样编辑现有的CSV,所以我只需要阅读old_csv中的所有行并创建new_csv。从old_csv开始,我将相应的数据从old_csv传递到我想要的方法(即extract_email(row['Website']),然后我处理该信息并收集数组中的电子邮件。

从那里,我所要做的就是遍历temp的集合并将其添加到row对象:

temp.each { |t| row << t }

然后我只需将row添加到新CSV,其中包含旧行+新添加的列。所以本质上我正在扩展每个row