Немного помочь войти в мир Ruby? - PullRequest
0 голосов
/ 16 февраля 2011

В свободное время я изучаю Ruby и установил на свой ноутбук виртуальную машину Linux Mint 10.

Я получил большинство базовых структур Ruby, и теперь я бы хотелна самом деле построить что-то с ним, чтобы проверить это.

Для моего первого проекта я хочу проанализировать файл CSV и сохранить информацию в массив в своем коде.

Достаточно просто, верно?

После некоторого поиска в Google я нашел эту библиотеку, которая, кажется, мне нужна.https://github.com/fauna/ccsv

Мой вопрос: как мне это использовать?Я пришел из мира C # /. Net, где я бы скачал .dll (в последнее время просто использовал NuGet), и он будет указан в проекте.

Что мне нужно делать в Ruby?Кто-нибудь может провести меня через это?Я новичок в этом языке, поэтому постарайтесь ничего не предполагать, я просто еще не знаю этого.Спасибо за ваше время.

Ответы [ 2 ]

3 голосов
/ 16 февраля 2011

Боюсь, что в ruby, это не так уж много для проекта. Предположим, у вас есть файл 'test.csv' с этим содержимым

letters,numbers
a,3
b,2
d,4

Вы можете разобрать это так:

require 'csv'
data = CSV.read('test.csv')

p data
#=> [["letters", "numbers"], ["a", "3"], ["b", "2"], ["d", "4"]]

Несколько сложнее:

data = CSV.read('test.csv',{:headers=>true})
puts data['numbers'][0] #=> 3

This {: headers => true} выглядит как блок, но это хеш. CSV принимает всевозможные параметры в хэш, общий шаблон.

2 голосов
/ 16 февраля 2011

В Ruby есть библиотека csv по умолчанию, и я использую функцию, найденную в http://snippets.dzone.com/posts/show/3899, для разбора файла CSV.

  require 'csv'
  def parse(file)
    csv_data = CSV.read file
    headers = csv_data.shift.map {|i| i.to_s }
    string_data = csv_data.map {|row| row.map {|cell| cell.to_s } }
    string_data.map {|row| Hash[*headers.zip(row).flatten] }
  end

  myHash = parse('myfile')

Если вы делаете ruby ​​без ООП, определения функций должны идти перед кодом, который его вызывает.

Чтобы ответить на ваш начальный вопрос, вы должны сделать в терминале:

gem install ccsv

Тогда в вашем коде:

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