无法从CSV中删除空行

时间:2016-03-08 14:55:17

标签: ruby csv

我在cvs文件中有空行:

CSV.table(filepath).count { |row| row.to_h.values.all?(&:blank?) }
#=> 6

我正在尝试使用CSV::Table#delete_if删除这些内容:

CSV.table(filepath).delete_if { |row| row.to_h.values.all?(&:blank?) }
#=> #<CSV::Table mode:col_or_row row_count:6>

在这里,我希望我的csv不再包含空行,但是:

CSV.table(filepath).count { |row| row.to_h.values.all?(&:blank?) }
#=> 6

我在这里错过了一些观点吗?我检查了CSV::Table是否有类似delete_if!的内容,但它没有,所以假设我的工作应该有效。

2 个答案:

答案 0 :(得分:5)

delete_if州的文件:

  

此方法返回链接表。

所以你把表拿回来了,我想你应该再把它保存到某些CSV。它不会修改原始CSV文件。

您需要再次存储它:File.write('/path/new_name.csv', csv.to_s)

答案 1 :(得分:0)

CSV.table(filepath, skip_blanks: true)

导致CSV忽略空行。