簡體   English   中英

我想通過ruby解析csv以創建報告

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

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