我有一个包含两行的csv报告,其标题为“Date”& “CUSTOMER_NAME”:
["Date", "Customer_Name"]
["Monday", "John"]
["", "David"]
["", "Sam"]
["", "Kenny"]
["Tuesday", "Mary"]
["", "Jade"]
["", "Lindsay"]
["Wednesday", "Tom"]
["", "Lindon"]
["", "Peter"]
我正在尝试打印一份声明,以显示当天的客户是谁,所以它会显示如下:周一有客户John,David,Sam,&肯尼。 \ 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
此致
答案 0 :(得分:0)
您可以在此处找到结果的原因&#34;#{array}&#34;,它会按原样插入数组&#39;进入字符串。所以你得到每一组。
我怀疑你使用错误的工具来完成工作。 ruby散列更适合分类数据。 (至少这次)
例如
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"
}
这应该在与他们相关的那天之后输出所有客户。
我离家不能跑这个,我希望它按预期工作&gt; _&lt;。
由于错过了您的数据样本,已编辑代码。