无法从CSV中删除空行

And*_*eko 1 ruby csv

我在cvs文件中有空行:

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

我试图使用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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

Mil*_*pke 5

delete_if各州的文件:

此方法返回链接表.

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

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

  • 或者,OP应该保存结果,如`csv = CSV.table(filepath).delete_if {...}`,然后完成`csv.count ...`. (3认同)