Need help massaging some strings


#1

As a Rails developer, I’ve been learning Ruby on a need-to-know basis.
However, I now need to tap its power to batch alter some very large text
dumps and find myself a bit lost. Here is what I need to do:

Transform data in files like “alabama.txt”:
* White Hall, Lowndes County
* Wilmer, Mobile County
* Wilsonville, Shelby County
* Wilton, Shelby County
* Winfield, Marion County
* Winterboro, Talladega County

…into this format:
White Hall
Wilmer
Wilsonville
Wilton
Winfield
Winterboro

I have created a method for doing this in “cleanup.rb”:

def cleanup(state)
diskfile = File.new(state + “-cleaned.txt”, “w”)
$stdout = diskfile

IO.foreach(state + “.txt”) do |line|
line.delete("*")
line.strip!
temp = line.split(",")
temp.delete_at(1).to_s
puts temp
end

diskfile.close
$stdout = STDOUT
end

So I go into IRB and here is how my session goes:

irb(main):008:0> require ‘cleanup’
=> true
irb(main):009:0> cleanup(alabama)
NameError: undefined local variable or method `alabama’ for
main:Object
irb(main):010:0> cleanup
ArgumentError: wrong number of arguments (0 for 1)

So my method is loaded but isn’t working. Could anyone offer any advice
on getting this thing running? Thanks in advance.


#2

irb(main):009:0> cleanup(alabama)
NameError: undefined local variable or method `alabama’ for

Got it. What a doofus - I just had to use this instead:

irb(main):009:0> cleanup(“alabama”)


#3

Taylor S. wrote:

* Winterboro, Talladega County

end
NameError: undefined local variable or method `alabama’ for
main:Object
irb(main):010:0> cleanup
ArgumentError: wrong number of arguments (0 for 1)

def cleanup(state)
File.open(state + “-cleaned.txt”, “w”) do |outfile|
IO.foreach(state + “.txt”) do |line|
outfile.puts line[ /^[\s*](.),[^,]*$/, 1 ]
end
end
end

Or:

def cleanup(state)
File.open(state + “-cleaned.txt”, “w”) { |out|
out.puts IO.readlines(state + “.txt”).map{|line|
line[ /^[\s*](.),[^,]*$/, 1 ] } }
end

Or even:

def cleanup(s)
open(s+"-cleaned.txt",“w”){|o|o<<IO.read(s+".txt").
gsub(/^[ ]|,.*$/,"")}
end


#4

On Dec 27, 2006, at 21:21, Taylor S. wrote:

* Winfield, Marion County

I have created a method for doing this in “cleanup.rb”:
puts temp
irb(main):009:0> cleanup(alabama)
NameError: undefined local variable or method `alabama’ for
main:Object

This is your clue. You didn’t define the alabama variable or method.

irb(main):010:0> cleanup
ArgumentError: wrong number of arguments (0 for 1)

You have to pass one argument.

So my method is loaded but isn’t working. Could anyone offer any
advice
on getting this thing running? Thanks in advance.

cleanup ‘alabama’


Eric H. - removed_email_address@domain.invalid - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!


#5

I think what the original author of this message was trying to say
was “Have you tryed RegExps?”
=P

Paulo Jorge Duarte
Köremoved_email_address@domain.invalid