ruby - 如何在 Ruby 中创建 CSV 文件的某些列的副本,其中一列中包含不同的数据?

标签 ruby csv

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

我将使用“A.csv”中的列子集,并且必须将一列的值更新为“B.csv”中的新值。最终,我将使用 B.csv 中的这些数据针对数据库进行验证。

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

我是 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/

相关文章:

Ruby - 访问多个数据库的续集模型

ruby - Jruby Gems-in-a-jar 问题

ruby - 字符串的 map() 的 Ruby 等价物是什么?

r - 如何将数据帧转换为时间序列?

ruby-on-rails - 使用具有两个 Devise 用户模型和不同身份验证方法的登录表单

javascript - 通过 Selenium Webdriver 验证 JavaScript 错误

php - 如何生成 csv 而不添加到 php 中的表

powershell - 使用具有 11k 行的Where-Object 过滤的巨大(13M 行)的 Import-Csv

c - 使用 C 编程直接访问 .csv 文件中的单元格

python - 如何从 Pylons 应用返回 CSV?