簡體   English   中英

將制表符分隔的CSV文件解析為Ruby 2.0中的哈希數組

[英]Parse tab delimited CSV file to array of hashes in Ruby 2.0

我有以下代碼:

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

這將創建一個哈希數組,並且可以使用逗號分隔的值很好地工作。 我正在嘗試為制表符分隔文件復制此代碼。 當前,當我在制表符分隔文件中運行上述代碼時,我得到的是這樣的:

array[0] = {"First Name\tLast Name\tCode\t"=>"Luigi\tSmith\t1406\t"}

因此,每個數組對象都是預期的哈希,但是它具有一對鍵值對-整個制表符分隔的標頭行是鍵,數據的單獨一行是值。

如何更改此代碼以返回具有單獨鍵值對的哈希數組,並且每列的標題映射到該列的行值?

您傳遞給解析的選項似乎在:: new中列出

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

使用col_sep選項,該帖子中包含以下代碼: 使用Ruby CSV更改導出的CSV中的字段分隔符/分隔符

還要簽出文檔: http : //ruby-doc.org/stdlib-2.1.0/libdoc/csv/rdoc/CSV.html

DEFAULT_OPTIONS部分中的很多好東西

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM