0

我有一个 csv 报告,其中有两行标题为“日期”和“客户名称”:

["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

问候

4

1 回答 1

0

可以在此处找到结果的原因“#{array}”,它将数组“按原样”插入到字符串中。因此,您可以分块获得每组。

我怀疑你使用了错误的工具来完成这项工作。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"
}

这应该在他们关联的那一天之后输出所有客户。

我不在家,无法运行它,我希望它能按预期工作>_<。

由于误读您的数据样本而编辑了代码。

于 2017-03-31T22:16:56.657 回答