Paulo Köch
12/28/2006 9:50:00 AM
I think what the original author of this message was trying to say
was "Have you tryed RegExps?"
=P
Paulo Jorge Duarte Köch
paulo.koch@gmail.com
On 2006/12/28, at 06:35, William James wrote:
> Taylor Strait wrote:
>> 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)
>
> 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
>
>