On Tue, Jun 17, 2008 at 7:44 PM, Cthulhu __ [email protected]
wrote:
33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
I need to store the index of the entry, in this case 32 and 33, as the
name of the 2 Dimensional array (array of arrays as ruby handles it?)
and then each value (alot of zeros in the case of 33) as a unique entry.
If you need a “name” for the entry then you might be thinking of a hash,
in
which 32 and 33 would be the keys and the rest of the line the value.
What do you mean by “a unique entry”? Maybe the rest of the string, as a
string?
An array with an element for each number in the string?
The format is plain tyext right now and I have had no luck using
File.readline
For some reason this does NOT work, the array dimensions do not match
expected structure:
elsif /aqua_t/=~(files_to_parse[i])
line_counter = 0
line = File.readlines(files_to_parse[i]).each do |line|
The each method returns the full enumerable, so after the
iteration, the line variable will reference an array of all lines.
Not sure that’s what you want.
line.each{|x| x.to_i}
This line does nothing, you don’t assign the return values of the block
anywhere or modify anything inside the block. But this line makes
me think you want an array of numbers.
raw_data_t[line_counter]=line.split
aqua = [0]
line_counter+=1
end#ends block over lines
This works for me:
irb(main):001:0> line_counter = 0
irb(main):005:0> raw = []
irb(main):006:0> File.readlines(“data.txt”).each do |line|
irb(main):007:1* raw[line_counter] = line.split
irb(main):008:1> line_counter += 1
irb(main):009:1> end
irb(main):010:0> raw
=> [[“32”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “8412803500”, “0”,
“0”, “0”, “0”, “0”, “0”, “0”, “46655166”, “0”, “0”, “0”, “0”, “0”,
“0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “240554000”, “0”,
“0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”,
“0”, “0”, “0”, “0”, “0”, “85321000”, “0”, “0”, “0”, “0”, “0”, “0”,
“0”, “479719000”, “0”, “0”, “0”, “97823285”, “283432000”, “0”,
“73887750”, “0”, “0”, “157225000”, “88659750”, “285211000”,
“70285000”, “0”, “161747000”, “161167000”, “234739666”, “120400000”,
“300083000”, “0”, “0”, “202327250”, “111865000”, “183127000”, “0”,
“161027000”, “0”, “0”, “0”], [“33”, “0”, “0”, “0”, “0”, “0”, “0”, “0”,
“0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”,
“0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”,
“0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”,
“0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”,
“0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”,
“0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”, “0”]]
So I’m not sure what the exact problem you are having is. The above
could be simplified, though, to avoid the counter:
raw = []
File.readlines(“data.txt”).each do |line|
raw << line.split
end
If you need the hash with keys 32 and 33, and as value an array of
numbers, you can do this:
raw = {}
File.readlines(“data.txt”).each do |line|
key, *value = line.split
value.map! {|x| x.to_i}
raw[key] = value
end
If the key needs to be a number you can to_i it too.
Hope this helps,
Jesus.