Forum: Ruby Need help massaging some strings

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Taylor S. (Guest)
on 2006-12-28 07:21
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.
Taylor S. (Guest)
on 2006-12-28 07:37
> 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")
Eric H. (Guest)
on 2006-12-28 07:39
(Received via mailing list)
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!
William J. (Guest)
on 2006-12-28 08:37
(Received via mailing list)
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
Paulo Köch (Guest)
on 2006-12-28 11:51
(Received via mailing list)
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
This topic is locked and can not be replied to.