如何将array.inspect的输出解析回数组

时间:2011-06-23 13:54:20

标签: ruby arrays string parsing

我想在文本文件中存储多维数组并有效地重新加载它们。棘手的部分是数组包含看起来像" ] , [ \\\""或任何东西的字符串。

将表格写入文件的最简单方法就是my_array.inspect(对吗?)

如何从文本文件中回读的字符串尽可能快速,轻松地重新创建数组,该文件可能看起来像"[\" ] , [ \\\\\\\"\"]"(如上例所示)?

3 个答案:

答案 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))