我想在文本文件中存储多维数组并有效地重新加载它们。棘手的部分是数组包含看起来像" ] , [ \\\""
或任何东西的字符串。
将表格写入文件的最简单方法就是my_array.inspect
(对吗?)
如何从文本文件中回读的字符串尽可能快速,轻松地重新创建数组,该文件可能看起来像"[\" ] , [ \\\\\\\"\"]"
(如上例所示)?
答案 0 :(得分:4)
如果您的数组仅包含字面编写的对象(如数字,字符串,数组,散列),则可以使用eval
。
a = [1, 2, 3].inspect
# => "[1, 2, 3]"
eval(a)
# => [1, 2, 3]
答案 1 :(得分:2)
在我看来,这听起来太麻烦了。请改用YAML。
require 'yaml'
a = [ [ [], [] ], [ [], [] ] ]
File.open("output.yml", "w") do |f|
f.write a.to_yaml
end
b = YAML.load File.open('output.yml', 'r')
作为替代方案,您可以使用JSON代替。
答案 2 :(得分:0)
说你有阵列
ary
您可以将数组写入文件:
File.open(path, 'w') { |f| f.write Marshal.dump(ary) }
然后通过将文件读入字符串并说
来重新创建数组ary = Marshal.load(File.read(path))