我有一个名为"A.csv"的CSV文件.我需要使用"A.csv"中的数据生成一个名为"B.csv"的新CSV文件.
我将使用"A.csv"中的列的子集,并且必须在"B.csv"中将一列的值更新为新值.然后我使用B.csv中的这些数据在数据库中进行验证.
我能够读取CSV,获取数组或哈希.
new*_*ere 179
正如迈克布所指出的那样,有文档 - http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html - 或者你可以按照下面的例子进行操作(所有这些都经过测试和工作):
在这个文件中,我们将有两行,一个标题行和一个数据行,非常简单的CSV:
require "csv"
CSV.open("file.csv", "wb") do |csv|
csv << ["animal", "count", "price"]
csv << ["fox", "1", "$90.00"]
end
Run Code Online (Sandbox Code Playgroud)
结果,一个名为"file.csv"的文件,其中包含以下内容:
animal,count,price
fox,1,$90.00
Run Code Online (Sandbox Code Playgroud)
几乎与上面的论坛相同而不是使用"wb"模式,我们将使用"a +"模式.有关这些的更多信息,请参阅此堆栈溢出答案:什么是Ruby File.open模式和选项?
CSV.open("file.csv", "a+") do |csv|
csv << ["cow", "3","2500"]
end
Run Code Online (Sandbox Code Playgroud)
现在,当我们打开file.csv时,我们有:
animal,count,price
fox,1,$90.00
cow,3,2500
Run Code Online (Sandbox Code Playgroud)
现在您知道如何复制和写入文件,读取CSV并因此获取数据以进行操作:
CSV.foreach("file.csv") do |row|
puts row #first row would be ["animal", "count", "price"] - etc.
end
Run Code Online (Sandbox Code Playgroud)
当然,这就像使用这个gem从CSV中提取信息一样.有关更多信息,我建议您访问文档,因为您有一本入门书:http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html