2017-03-31 17 views
0

レポートを作成するために、ルビーでCSVを解析したいと思いますその日の顧客は誰かを示すために、次のように表示されます。月曜日の顧客はJohn、David、Sam、& Kennyです。 \ nは 火曜日はメアリー、ジェイド、リンゼイ私は「日」&「CUSTOMER_NAME」のヘッダを持っている2行のCSVレポートを持っている

を持っており、私のコードは次のとおりです。

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

しかし、私は正しい出力を取得し、プログラミングに新しいIAM最も可能性の高い...どのように私はすべきで助けてくださいではないのです要件を達成する?

["日付"、 "月曜日"、nil、nil、 "火曜日"、nil、nil、 "水曜日"、nil、nilには顧客["Customer_Name"、 "John"、 "David" "サムは"、 "ケニー"、 "メアリー"、 "ジェイド"、 "リンゼイ"、 "トム"、 "リンドン" は、 "ピーター"]はstore.C02S51D2G8WLを訪問しました:RubySQL

よろしく

+0

入力テキストに実際にカッコが含まれていますか? – dawg

+0

いいえ、私はちょうどcsvファイルを読むことによってその出力をつかみます。 #require 'csv' #CSV.foreach( 'customerVisit.csv')do | row | #\tプットは #最後 "日付"、 "CUSTOMER_NAME" "月曜日"、 "ジョン" ""、 "デビッド" ""、 "サム" ""、 "ケニー" 」をrow.inspect火曜日」、 『メアリー』 『』、 『ジェイド』 『』、 『リンゼイ』 『水曜日』、 『トム』 『』、 『リンドン』 『』、 『ピーター』 –

+0

以上に、より良い解決策がある場合私の要件は、助言してください。 しかし、毎日異なる顧客が表示されるので、必ずしも3人または4人の顧客になるとは限りません。 –

答えて

0

理由あなたの結果が "#{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" 
} 

のためにそれらが関連付けられている一日の後にこれを出力すべきすべての顧客。

私は家から離れており、これを実行できません。意図したとおりに動作することを願っています。> _ <。

編集コードが誤って読み込まれています。

+0

ありがとうございました!それは動作します!しかし、私は質問があります。 temp = date日付が基本的には、日付が一致すると、新しい日付が正しくなるまでcustomer_nameのループが繰り返されますか? –

+0

はい、いいえ、正確にはそれはしませんが、その効果があります。あなたの出力には、新しい日が来るまではゼロの値があります。その行は、dateがnilでない限り、temp =を日付に設定します。 – CookieNinja

関連する問題