Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

Created April 26, 2016 17:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/de677118f02945fb6107767697af92ee to your computer and use it in GitHub Desktop.
Save anonymous/de677118f02945fb6107767697af92ee to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
require 'csv'
require 'axlsx'
CSV::Converters[:blank_to_nil] = lambda do |field|
field && field.empty? ? nil : field
end
CSV::Converters[:comma_numbers] = lambda do |field|
comma_numbers = (field =~ /^\d+,/) ? (field.gsub(',','').to_f) : field
end
CSV::Converters[:date_us] = lambda do |field|
date_us = (field =~ /^\d+\/\d+\/\d+/) ? (Date.strptime(field, '%m/%d/%Y')) : field
end
csv = CSV.read("./test2.tab", :col_sep=>"\t", :headers => true, :header_converters => :symbol, :converters => [:all, :blank_to_nil, :comma_numbers, :date_us])
puts "csv:"
print csv
puts "\ncsv.class: #{csv.class}\n"
csv2 = csv.sort_by { |k| k[:deal_date] }
puts "csv[0]: #{csv[0]}\n"
puts "csv2.class: #{csv2.class}\n"
puts "csv2[0].class: #{csv2[0].class}\n"
=begin
Output:
ruby --version
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux]
./csv-problem-01.rb
csv:
diner_name,menu_item,meal_date,meal,cooking_time,price,date_of_reservation,cost
Joe McGrath,1611,2016-02-12,Steak,300,24.95,2016-02-18,12.05
Dickie \Dunn,1021,2001-09-01,Chicken,500,16.95,2001-12-10,6.15
Reggie 'Reg' Dunlop,160211,2006-05-08,Fish,160,15.95,2006-05-09,8.25
Ogie `Ogilthorpe`,6241,2014-09-30,Quiche,220,9.95,2014-10-01,2.1
csv.class: CSV::Table
csv[0]: Joe McGrath,1611,2016-02-12,Steak,300,24.95,2016-02-18,12.05
csv2.class: Array
csv2[0].class: CSV::Row
=end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment