2015-06-27 57 views
1

嘗試使用Ruby從csv文件中刪除行,但未成功。Ruby csv - 如果列爲空,則刪除行

如何判斷列「newprice」爲空的所有行應該刪除?

require 'csv' 
guests = CSV.table('new.csv', headers:true) 

guests.each do |guest_row| 
    p guests.to_s 
end 

price = CSV.foreach('new.csv', headers:true) do |row| 
    puts row['newprice'] 
end 

guests.delete_if('newprice' = '') 

File.open('new_output.csv', 'w') do |f| 
    f.write(guests.to_csv) 
end 

謝謝!

回答

0

幾乎在那裏。 table方法將標題更改爲符號,並且delete_if佔用一個塊,與eachopen相同。

require 'csv' 
guests = CSV.table('test.csv', headers:true) 

guests.each do |guest_row| 
    p guest_row.to_s 
end 

guests.delete_if do |row| 
    row[:newprice].nil? 
end 

File.open('test1.csv', 'w') do |f| 
    f.write(guests.to_csv) 
end 
+0

完美,作品。非常感謝!在你的回答中只有一個「}」太多了。 – Karsten

+0

啊,是的,我使用了其他塊形式並忘記了它。糾正。 – steenslag