I am pretty new to Ruby and have been trying some really basic text parsing. I am now however trying to parse a little bit more of a complicated file and then push it out in
Here's a general idea for you to start with
File.open( thefile ).each do |line|
print line without the new line if line does not contain /--+/
if line contains /--+/
print line with a new line
end
end
Here's one complete solution. Note that it's very sensitive to the file structure!
out_file = File.open('your_csv_file.csv', 'w')
out_file.puts "Title,Publisher,Publishedate,Number1,Number2,Number3,Category"
the_line = []
in_title = false
IO.foreach('your_file_name') do |line|
if line =~ /^-+$/
out_file.puts the_line.join(',')
the_line = []
elsif line =~ /^Title$/
in_title = true
elsif line =~ /^(?:Publishe(?:r|d Date)|Number\d|Category):\s+(.*?)$/
the_line += [$1]
in_title = false
elsif in_title
the_line[0] = (the_line.empty? ? line.chomp : "\"#{the_line[0]} #{line.chomp}\"")
else
puts "Error: don't know what to do with line #{line}"
end
end
out_file.close