[英]I would like to parse csv by ruby to create a report
我有兩行的csv報表,其標題為“ Date”和“ Customer_name”:
["Date", "Customer_Name"]
["Monday", "John"]
["", "David"]
["", "Sam"]
["", "Kenny"]
["Tuesday", "Mary"]
["", "Jade"]
["", "Lindsay"]
["Wednesday", "Tom"]
["", "Lindon"]
["", "Peter"]
我正在嘗試打印一份聲明,以顯示當天的客戶是誰,因此它將顯示為:星期一有客戶John,David,Sam和Kenny。 \\ n周二有Mary,Jade和Lindsay
我的代碼是:
require 'csv'
col_date = []
col_name = []
custDate = CSV.foreach("customerVisit.csv") {|row| col_date << row[0]}
customer_name = CSV.foreach("customerVisit.csv") {|row| col_name << row[1]}
print "#{col_date} has customers #{col_name} visited the store."
但是我沒有得到正確的輸出,很可能是編程的新手。請幫助我如何達到要求?
[“ Date”,“ Monday”,nil,nil,nil,“ Tuesday”,nil,nil,“ Wednesday”,nil,nil]有客戶[“ Customer_Name”,“ John”,“ David”,“ Sam”, “ Kenny”,“ Mary”,“ Jade”,“ Lindsay”,“ Tom”,“ Lindon”,“ Peter”]參觀了商店。C02S51D2G8WL:RubySQL
問候
結果的原因可以在“#{array}”中找到,它會在字符串中按原樣插入數組。 這樣您就可以將每個集合分成塊。
我懷疑您使用的工具錯誤。 紅寶石哈希更適合對數據進行分類。 (至少這次)
例如
require 'csv'
customer_hash = {} # {"Date" => "Customers"}
temp = ""
CSV.foreach("customerVisit.csv") { |date, customer|
temp = date if date
customer_hash[temp] = [] unless customer_hash[temp]
customer_hash[temp] << customer
}
customer_hash.each { |date, customers|
print "#{date} has customers"
customers.each { |name| print ", #{name}" }
print "\nvisiting the store.\n"
}
這應該在與他們關聯的一天之后輸出所有客戶。
我出門在外,無法運行此程序,希望它能按預期工作> _ <。
由於未正確讀取數據樣本而導致代碼已編輯 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.