[英]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.