将制表符分隔的CSV文件解析为Ruby 2.0中的哈希数组

Lui*_*igi 1 ruby csv arrays hash ruby-on-rails

我有以下代码:

  def csv_to_array(file)
    csv = CSV::parse(file)
    fields = csv.shift
    array = csv.collect { |record| Hash[*fields.zip(record).flatten] }
  end
Run Code Online (Sandbox Code Playgroud)

这将创建一个哈希数组,并使用逗号分隔值正常工作.我试图复制此代码为制表符分隔文件.目前,当我在我的制表符分隔文件上运行上面的代码时,我得到这样的东西:

array[0] = {"First Name\tLast Name\tCode\t"=>"Luigi\tSmith\t1406\t"}
Run Code Online (Sandbox Code Playgroud)

因此,每个数组对象都是预期的散列,但它有一个键值对 - 整个制表符分隔的标题行是键,单个数据行是值.

如何更改此代码以返回具有单个键值对的哈希数组,每列的标题映射到该列的行值?

jua*_*tas 5

您传递给解析的选项似乎列在:: new中

>> CSV.parse("qwe\tq\twe", col_sep: "\t"){|a| p a}
["qwe", "q", "we"]
Run Code Online (Sandbox Code Playgroud)