如何在Ruby中创build新的CSV文件?

我有一个名为“A.csv”的CSV文件。 我需要用“A.csv”中的数据生成一个名为“B.csv”的新CSV文件。

我将使用“A.csv”列的一个子集,并且必须将一列的值更新为“B.csv”中的新值。 然后我使用这个来自B.csv的数据来validation数据库。

  1. 如何创build新的CSV文件?
  2. 如何将所需列的数据从A.csv复制到“B.csv”?
  3. 如何附加特定列的值?

我能够读取CSV,获取数组或散列。

正如mikeb指出的那样,这里有文档 – http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html – 或者你可以按照下面的例子进行操作加工):

要创build一个新文件:

在这个文件中,我们将有两行,一个标题行和一个数据行,非常简单的CSV:

require "csv" CSV.open("file.csv", "wb") do |csv| csv << ["animal", "count", "price"] csv << ["fox", "1", "$90.00"] end 

结果,一个名为“file.csv”的文件如下:

 animal,count,price fox,1,$90.00 

如何将数据追加到CSV

几乎与上面相同的forumla而不是使用“wb”模式,我们将使用“a +”模式。 有关这些堆栈溢出的更多信息,请参阅: 什么是Ruby File.open模式和选项?

 CSV.open("file.csv", "a+") do |csv| csv << ["cow", "3","2500"] end 

现在当我们打开我们的file.csv时,我们有:

 animal,count,price fox,1,$90.00 cow,3,2500 

从我们的CSV文件中读取

现在你知道如何复制和写入文件,读取CSV文件,因此抓取数据进行操作:

 CSV.foreach("file.csv") do |row| puts row #first row would be ["animal", "count", "price"] - etc. end 

当然,这就像使用这个gem从一个CSV中获取信息的方式一样。 有关更多信息,我build议您访问文档现在你有一个初级: http : //ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html

你见过Ruby的CSV类吗? 看起来相当全面。 看看这里: http : //ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html