【发布时间】:2010-01-16 07:43:17
【问题描述】:
我有一个数组,如“作者”、“帖子标题”、“日期”、“时间”、“帖子类别”等
我从论坛上抓取了详细信息,我想要
- 使用 ruby 保存数据
- 使用 ruby 更新数据
- 使用文本编辑器更新数据,或者我正在考虑使用 OpenOffice 程序之一? Calc 是最好的。
我想拥有某种 SQL 数据库会是一个解决方案,但我需要快速的解决方案(我可以自己做 :-)
有什么建议吗?
谢谢
【问题讨论】:
标签: ruby
我有一个数组,如“作者”、“帖子标题”、“日期”、“时间”、“帖子类别”等
我从论坛上抓取了详细信息,我想要
我想拥有某种 SQL 数据库会是一个解决方案,但我需要快速的解决方案(我可以自己做 :-)
有什么建议吗?
谢谢
【问题讨论】:
标签: ruby
YAML 是你的朋友。
require "yaml"
yaml= ["author","post title","date","time","post category"].to_yaml
File.open("filename", "w") do |f|
f.write(yaml)
end
这会给你
---
- author
- post title
- date
- time
- post category
反之亦然
require "yaml"
YAML.load(File.read("filename")) # => ["author","post title","date","time","post category"]
Yaml 易于人类阅读,因此您可以使用任何文本编辑器(而不是像 ooffice 这样的文字处理器)对其进行编辑。您不仅可以序列化数组和字符串。 Yaml 适用于大多数 ruby 对象,甚至适用于用户定义类的对象。这是对 yaml 语法的一个很好的介绍:http://yaml.kwiki.org/?YamlInFiveMinutes。
【讨论】:
如果您想使用电子表格,则可以使用 csv。您可以使用 stdlib csv api,例如:
require 'csv'
my2DArray = [[1,2],["foo","bar"]]
File.open('data.csv', 'w') do |outfile|
CSV::Writer.generate(outfile) do |csv|
my2DArray.each do |row|
csv << row
end
end
end
然后您可以在 calc 或大多数统计应用程序中打开生成的文件。
如果需要,可以使用相同的 API 在 ruby 中重新导入结果。
【讨论】:
CSV::Writer.generate 方法。然后,您可以在使用 calc 打开 csv 时指定相同的分隔符。
"foo,bar", "baz" 带有 to items。
您可以将其序列化为 json 并将其保存到文件中。这将允许您使用简单的文本编辑器对其进行编辑。
如果您想以 calc 之类的方式对其进行编辑,可以考虑生成一个 CSV(逗号分隔值)文件并将其导入。
【讨论】:
如果我理解正确,你有一个二维数组。您可以像这样以 csv 格式输出它:
array.each do |row|
puts row.join(",")
end
然后你用 Calc 导入它来编辑它或只使用文本编辑器。
如果您的数据可能包含逗号,您应该查看 csv 模块: http://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html
【讨论】: