Skip to content

Instantly share code, notes, and snippets.

@christiangenco
Created March 26, 2014 18:24
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save christiangenco/73a7cfdb03e381bff2e9 to your computer and use it in GitHub Desktop.
require 'csv'
data = [
{
:name => "Joe",
:age => 30,
:description => "\"Joe's a great guy.\" - most of his friends say"
},
{
:name => "Bob",
:age => 42.1,
:description => "Bob's personality goes from here:\t\t\t\t\t: to there\nYa know?"
}
]
options = {
:col_sep => 31.chr,
:row_sep => 30.chr,
:quote_char => ' ', # the CSV library doesn't like when this is blank
:headers => true,
:header_converters => :symbol,
:converters => :all
}
# data -> csv
header = nil
csv_data = CSV.generate(options) do |csv|
header = data.first.keys
csv << header
data.each{|row|
csv << row.values
}
end
puts "CSV:"
puts csv_data
puts
# csv -> data
parsed_data = CSV.parse(csv_data, options).map{|row|
Hash[row.map{|c,r|
[c,r]
}]
}
puts "Parsed data:"
p parsed_data
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment