我有一个名为“A.csv”的 CSV 文件。我需要使用“A.csv”中的数据生成一个名为“B.csv”的新 CSV 文件。
我将使用“A.csv”中的列子集,并且必须将一列的值更新为“B.csv”中的新值。最终,我将使用 B.csv 中的这些数据针对数据库进行验证。
- 如何创建新的 CSV 文件?
- 如何将所需列的数据从 A.csv 复制到“B.csv”?
- 如何为特定列附加值?
我是 Ruby 的新手,但我能够读取 CSV 以获取数组或散列。
最佳答案
正如 mikeb 指出的那样,有文档 - 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
结果,一个名为“file.csv”的文件包含以下内容:
animal,count,price
fox,1,$90.00
如何将数据附加到 CSV
几乎与上面的公式相同,只是不使用“wb”模式,我们将使用“a+”模式。有关这些的更多信息,请参阅此堆栈溢出答案:What are the Ruby File.open modes and options?
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 中提取信息的一百种不同方法中的一种。有关更多信息,我建议您访问文档,因为您已经有了入门书:http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html
关于ruby - 如何在 Ruby 中创建 CSV 文件的某些列的副本,其中一列中包含不同的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12718872/