【发布时间】:2016-02-01 04:12:56
【问题描述】:
我是 Ruby 的新手,我用它来尝试读/写 csv。到目前为止,我有一个执行以下操作的脚本:
- 从 CSV 文件导入数据,将选择的列存储为单独的数组(我不需要每一列的数据)
- 对数据执行计算,将结果存储在新创建的数组中
-
将数组转置为表格行,以输出到 csv
table = [Result1, Result2, Result3].transpose
目前,我可以使用以下方式输出表格:
CSV.open(resultsFile, "wb",
:write_headers=> true,
:headers => ["Result1", "Result2", "Result3"]
) do |csv|
table.each do |row|
csv << row
end
我的问题是,如何在其中一个结果等于某个文本字符串的情况下仅向输出行添加条件。例如,如果 result2 中的值等于“Apple”,我希望将该行中的数据写入 csv 文件。如果不是,则跳过该行。
我尝试将 if/else 放在几个不同的区域,但没有任何成功。
感谢您的帮助
【问题讨论】:
-
单独存储列有什么好处?
-
@Tilo csv 有大约 40 列,我只对其中 3 列感兴趣(我已经编辑了我的帖子以使那篇文章更清晰)。不过,我愿意接受任何建议 - 这是我第一次尝试 Ruby,所以不确定我是否做对了。
-
如果您使用
smarter_csvgem,您可以使用key_mapping选项仅保留您感兴趣的列,然后根据需要将数据写入新的 CSV 文件