Ruby:引用.dat文件并将列分配给用户定义的数组

时间:2012-11-18 04:52:23

标签: ruby parsing

Ruby新手,尝试将给定列分配给可在.rb文件中引用的数组值。此外,尝试学习,所以试图不使用任何快捷方式(自制软件解决方案等)。

FILE.DAT

1  88    59    74          53.8       0.00         280  9.6 270  17  1.6  93 23 1004.5
2  79    63    71          46.5       0.00         330  8.7 340  23  3.3  70 28 1004.5
3  77    55    66          39.6       0.00         350  5.0 350   9  2.8  59 24 1016.8
4  77    59    68          51.1       0.00         110  9.1 130  12  8.6  62 40 1021.1

以及更多这样的行。

谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

input = File.open('./file.dat', File::RDONLY){|f| f.read }
array = input.lines.map(&:split)

它将为您提供嵌套数组,例如:

[
  ["1", "88", "59", "74", "53.8", "0.00", "280", "9.6", "270", "17", "1.6", "93", "23", "1004.5"],
  ["2", "79", "63", "71", "46.5", "0.00", "330", "8.7", "340", "23", "3.3", "70", "28", "1004.5"],
  ["3", "77", "55", "66", "39.6", "0.00", "350", "5.0", "350", "9", "2.8", "59", "24", "1016.8"],
  ["4", "77", "59", "68", "51.1", "0.00", "110", "9.1", "130", "12", "8.6", "62", "40", "1021.1"]
]

如果您想在数组中使用数值,请使用:

array = input.lines.map{|l| l.split.map(&:to_f) }

这将为您留下如下数组:

[
  [1.0, 88.0, 59.0, 74.0, 53.8, 0.0, 280.0, 9.6, 270.0, 17.0, 1.6, 93.0, 23.0, 1004.5],
  [2.0, 79.0, 63.0, 71.0, 46.5, 0.0, 330.0, 8.7, 340.0, 23.0, 3.3, 70.0, 28.0, 1004.5],
  [3.0, 77.0, 55.0, 66.0, 39.6, 0.0, 350.0, 5.0, 350.0,  9.0, 2.8, 59.0, 24.0, 1016.8],
  [4.0, 77.0, 59.0, 68.0, 51.1, 0.0, 110.0, 9.1, 130.0, 12.0, 8.6, 62.0, 40.0, 1021.1]
]