如何从文件中读取二维数组的元素数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从文件中读取二维数组的元素数?相关的知识,希望对你有一定的参考价值。
我有一个文件。在文件中我存储了一个二维数组,如下所示:
[[0, 0, 1, 0, 1, 0, 1, 0, 1, 0], [0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 1, 1, 1, 1, 0, 0], [0, 0, 0, 1, 0, 0, 1, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0], [0, 1, 1, 0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
数组的长度可以变化,并且它们并不总是10个元素长。
我使用这个方法从文件中读取数组:
map = IO.readlines("test.txt")
当我使用以下方式打印结果时:
map.each {|x| puts "#{x}"}
输出是我所期望的。但如果我尝试使用以下方法获取行长度:
puts map[0].length
我得到320而不是10(这是我所期望的)。
有人可以解释我为什么我得到320
而不是10
?
答案
你应该使用IO#readlines
代替JSON#parse
,因为它是一个有效的json:
require 'json'
JSON.parse(File.read("test.txt"))
#⇒ [[0, 0, 1, 0, 1, 0, 1, 0, 1, 0],
# [0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
# [0, 0, 0, 0, 1, 1, 1, 1, 0, 0],
# [0, 0, 0, 1, 0, 0, 1, 0, 0, 0],
# [0, 1, 1, 0, 0, 0, 0, 0, 0, 0],
# [0, 0, 0, 0, 0, 0, 1, 1, 1, 0],
# [0, 1, 1, 0, 1, 0, 1, 0, 1, 0],
# [0, 1, 0, 0, 0, 0, 0, 1, 0, 0],
# [0, 0, 0, 1, 0, 0, 0, 1, 0, 0],
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
以上是关于如何从文件中读取二维数组的元素数?的主要内容,如果未能解决你的问题,请参考以下文章