【问题标题】:Ruby CSV.readline convert to hashRuby CSV.readline 转换为哈希
【发布时间】:2017-03-01 19:41:46
【问题描述】:

我有足球比赛结果的文件

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

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

【问题讨论】:

  • 期望的输出是什么?
  • require 'csv' 是多余的,下面的代码从不使用 CSV。
  • 我看不到您尝试在哪里进行计算。向我们展示您的尝试。或者你想让我们为你写那个?
  • 第一步是获取哈希。现在我必须计算每场比赛的分数。
  • 1. Boca,6 分 2. River,5 分 3. San Lorenzo,1 分 3. Independiente,1 分 5. Grouches,0 分

标签: arrays ruby file csv


【解决方案1】:
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

【讨论】:

  • 数组的未定义方法`split'
  • 请花时间正确格式化答案以提高可读性。此外,不要使用图像链接来显示重要信息。相反,将该信息复制到答案中。链接腐烂然后断开,当它们这样做时,这些信息就会丢失。
  • #=> [{"player1"=>"Boca", "scope_p1"=>"3", "player2"=>"River", "score_p2"=>"3"}, {"player1"=>"Independiente", "scope_p1"=>"1", "player2"=>"San Lorenzo", "score_p2"=>"0"}, {"player1"=>"Boca", " scope_p1"=>"1", "player2"=>"San Lorenzo", "score_p2"=>"1"}, {"player1"=>"Independiente", "scope_p1"=>"3", "player2" =>"River", "score_p2"=>"1"}, {"player1"=>"Boca", "scope_p1"=>"4", "player2"=>"Grouches", "score_p2"=>" 0"}]
【解决方案2】:
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"
# ]

【讨论】:

  • #=> Boca 3-River 3:Independiente 1-San Lorenzo 0:Boca 1-San Lorenzo 1:Independiente 3-River 1:Boca 4-Grouches 0:
  • line = 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"]]
猜你喜欢
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 2011-06-29
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多