Deleting row from CSV

R

robnewnham

I have come code which is looking for a particular number within a CSV
row (item no 2). If it finds it, I want it to output the row
unchanged - but if it isn't there, I want it to delete the row
entirely.

I can't get the following code to work - can anyone spot my mistakes?

reequire "csv"
def basketExtract
f = File.open('DATA.DAT')
csvr = CSV::Reader.create(f,'|')
# import CSV file and read it.

header = csvr.shift
#removes header character
outfile = File.new('NEWDATA.DAT','w')
CSV::Writer.create(outfile, '|') << header

csvr.each do |csv|
# read each row in the CSV
if csv[1] == 699 #if the branch number is one of the requested
ones.
outrow = csv
else #if it isn't one in the list
next
end
CSV::Writer.create(outfile, '|') << outrow
end
end
 
J

Jesús Gabriel y Galán

I have come code which is looking for a particular number within a CSV
row (item no 2). If it finds it, I want it to output the row
unchanged - but if it isn't there, I want it to delete the row
entirely.

I can't get the following code to work - can anyone spot my mistakes?

reequire "csv"
def basketExtract
f = File.open('DATA.DAT')
csvr = CSV::Reader.create(f,'|')
# import CSV file and read it.

header = csvr.shift
#removes header character
outfile = File.new('NEWDATA.DAT','w')
CSV::Writer.create(outfile, '|') << header

csvr.each do |csv|
# read each row in the CSV
if csv[1] == 699 #if the branch number is one of the requested
ones.

I think the entries are strings, so this comparison will never be true.
Try

if csv[1] == "699"
outrow = csv
else #if it isn't one in the list
next
end
CSV::Writer.create(outfile, '|') << outrow
end
end

On the other hand, I would use fastercsv and do something like:

require 'fastercsv'

FasterCSV.open("new.csv", "w") do |out|
FasterCSV.foreach("test.csv", {:headers => true, :return_headers =>
true, :col_sep => '|'}) do |row|
out << row if (row.header_row? || row[1] == "699")
end
end

Hope this helps,

Jesus.
 
L

László

I installed the Ruby 1.9.1, but I am new in Ruby.
I would like plot geometry on screen, for example circle, triangle, etc ...
and make a website with

whiteboard program. Please help me orientate myself. In library I found
only tk. but I am not sure, that I can

only a point to draw to screen.

And I saw some draw program, but wich will working with 1.9.1. ?



Laszlo
 
L

László

Hello,

I have installed the Ruby 1.9.1, but I am new in Ruby.
I would like plot geometry on screen, for example circle, triangle, etc ...
and make a website with whiteboard program. Please help me orientate
myself. In library I found
only tk. with a few program, but I am not sure, that I can only a point to
draw to screen.

And I saw some draw program, but wich will working with 1.9.1. on windows
XP ?


Thank you Laszlo
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,772
Messages
2,569,593
Members
45,109
Latest member
JanieMalco
Top