сохранить / редактировать массив внутри и снаружи ruby - PullRequest
3 голосов
/ 16 января 2010

У меня есть массив типа "автор", "заголовок сообщения", "дата", "время", "категория сообщения" и т. Д. И т. Д.

Я соскребаю детали с форума и хочу

  • сохранить данные, используя ruby ​​
  • обновить данные с помощью ruby ​​
  • обновить данные с помощью текстового редактора или я думал об одной из программ OpenOffice? Calc будет лучшим.

Я думаю, что иметь какую-то базу данных SQL было бы решением, но мне нужно быстрое решение для этого (что-то, что я могу сделать самостоятельно: -)

есть предложения?

Спасибо

Ответы [ 4 ]

7 голосов
/ 16 января 2010

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.

2 голосов
/ 16 января 2010

Если вы хотите использовать электронную таблицу, CSV это путь. Вы можете использовать API-интерфейс stdlib csv как:

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, если вам нужно.

1 голос
/ 16 января 2010

Вы можете сериализовать его в json и сохранить в файл. Это позволит вам редактировать его с помощью простого текстового редактора.

Если вы хотите отредактировать его в чем-то похожем на calc, вы можете создать файл CSV (значения, разделенные запятыми) и импортировать его.

0 голосов
/ 16 января 2010

Если я правильно понимаю, у вас есть двумерный массив. Вы можете вывести его в формате CSV так:

array.each do |row|
    puts row.join(",")
end

Затем вы импортируете его с Calc для редактирования или просто используете текстовый редактор.

Если ваши данные могут содержать запятые, вам следует взглянуть на модуль csv: http://ruby -doc.org / STDLIB / libdoc / CSV / RDoc / index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...