gpt4 book ai didi

ruby - 如何将文本文件读入数组数组(每个子数组都是文本文件中的一行?)

转载 作者:数据小太阳 更新时间:2023-10-29 07:08:39 24 4
gpt4 key购买 nike

所以我在 Ruby 方面几乎是个新手,我整理了一个代码来解决 MinCut 问题(对于一个作业,是的——我整理并测试了那部分代码),并且我无法弄清楚如何读取文件并将其放入数组数组中。我有一个文本文件要阅读,其中包含不同长度的列,如下所示

1 37 79 164

2 123 134

3 48 123 134 109

我想将它读入一个二维数组,其中每一行和每一列都被拆分,每一行都进入一个数组。因此,上述示例的结果数组将是:

[[1, 37, 79, 164], [2, 123, 134], [3, 48, 123, 134, 109]]

我读取文本文件的代码如下:

def read_array(file, count)
int_array = []
File.foreach(file) do |f|
counter = 0
while (l = f.gets and counter < count ) do
temp_array = []
temp_array << l.to_i.split(" ")
int_array << temp_array
counter = counter + 1
end

end
return int_array
end

非常感谢任何帮助!

另外,如果有帮助的话,我目前得到的错误是“block in read_array': private method 'gets' called for #”

我已经尝试了一些方法,但收到了不同的错误消息...

最佳答案

File.readlines('test.txt').map do |line|
line.split.map(&:to_i)
end

解释

readlines 读取整个文件并按换行符拆分。它看起来像这样:

["1 37 79 164\n", "2 123 134\n", "3 48 123 134 109"]

现在我们遍历这些行(使用 map)并将每一行拆分为它的数字部分(split)

[["1", "37", "79", "164"], ["2", "123", "134"], ["3", "48", "123", "134", "109"]]

项目仍然是字符串,因此内部 map 将它们转换为整数 (to_i)。

[[1, 37, 79, 164], [2, 123, 134], [3, 48, 123, 134, 109]]

关于ruby - 如何将文本文件读入数组数组(每个子数组都是文本文件中的一行?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17883896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com