2017-03-01 131 views
-4

我有足球的成果文件相匹配红宝石CSV.readline转换成散列

Boca 3, River 3 
Independiente 1, San Lorenzo 0 
Boca 1, San Lorenzo 1 
Independiente 3, River 1 
Boca 4, Grouches 0 

我所做的:

require 'csv' 
matches = [] 
File.readlines('data.txt').each do |line| 
    matches << line.chomp 
end 
puts matches 

,我需要计算每场比赛的结果

+1

什么是期望的输出? – Anthony

+1

'require'csv''是多余的,下面的代码从不使用CSV。 – mudasobwa

+0

我没有看到你尝试做计算的地方。告诉我们你的尝试。或者你想让我们为你写吗? –

回答

0
matches = [] 

File.readlines('data.txt').each do |line| 

    my_line = line.chomp.split(', ').map! { |l| l.split(/\s+(?=\d+$)/) }.flatten 

    matches << [['player1', 'scope_p1', 'player2', 'score_p2'], my_line].transpose.to_h 

end 

p matches 

Example Here

+0

未定义的方法'分裂”的阵列 – user3907932

+0

现在我发布完整码。 –

+0

这是工作谢谢! – user3907932

0
File.readlines('data.txt') 
    .map { |e| e.split(", ").map { |e| e.split(/\s+(?=\d+$)/) } } 
    .map { |((t1, s1), (t2, s2))| "#{t1}—#{t2} #{s1}:#{s2}" } 
#=> [ 
# [0] "Boca—River 3:3", 
# [1] "Independiente—San Lorenzo 1:0", 
# [2] "Boca—San Lorenzo 1:1", 
# [3] "Independiente—River 3:1", 
# [4] "Boca—Grouches 4:0" 
# ] 
+0

# >博卡拉3-河3 : 独立队1-圣洛伦索0 : 博卡拉1-圣洛伦索1 : 独立队3-河1 : 博卡拉4-牢骚满腹0 : – user3907932

+0

线= line.map {| E | e.split(“,”)} => [[“Boca 3”,“River 3 \ n”],[“Independiente 1”,“San Lorenzo 0 \ n”],[“Boca 1”,“San Lorenzo 1 \ n“],[”Independiente 3“,”River 1 \ n“],[”Boca 4“,”Grouches 0 \ n“]] – user3907932