Подтвердить что ты не робот

Как создать новый CSV файл в Ruby?

У меня есть файл CSV под названием "A.csv" . Мне нужно создать новый CSV файл под названием "B.csv" с данными из "A.csv" .

Я буду использовать подмножество столбцов из "A.csv" и вам придется обновить одно значение столбца до нового значения в "B.csv" . Затем я использую эти данные из B.csv для проверки в базе данных.

  • Как создать новый CSV файл?
  • Как скопировать необходимые данные столбца из A.csv в "B.csv" ?
  • Как добавить значения для определенного столбца?

Я могу читать CSV, получать массив или хеш.

4b9b3361

Ответ 1

Как отметил Майкб, есть документы - http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html - Или вы можете следовать приведенным ниже примерам (все тестируются и рабочий):

Чтобы создать новый файл:

В этом файле у нас будет две строки: строка заголовка и строка данных, очень простая CSV:

require "csv"
CSV.open("file.csv", "wb") do |csv|
  csv << ["animal", "count", "price"]
  csv << ["fox", "1", "$90.00"]
end

result, файл с именем "file.csv" со следующим:

animal,count,price
fox,1,$90.00

Как добавить данные в CSV

Почти тот же форумла, что и выше, вместо использования режима "wb", мы будем использовать режим "+". Для получения дополнительной информации об этом см. Ответ: Каковы режимы и параметры Ruby File.open?

CSV.open("file.csv", "a+") do |csv|
  csv << ["cow", "3","2500"]
end

Теперь, когда мы открываем файл file.csv, мы имеем:

animal,count,price
fox,1,$90.00
cow,3,2500

Читайте в нашем файле CSV

Теперь вы знаете, как копировать и записывать в файл, читать CSV и, следовательно, захватывать данные для манипуляций, которые вы только что делаете:

CSV.foreach("file.csv") do |row|
  puts row #first row would be ["animal", "count", "price"] - etc.
end

Конечно, это похоже на один из сотен различных способов вытащить информацию из CSV, используя этот драгоценный камень. Для получения дополнительной информации я предлагаю посетить документы теперь, когда у вас есть праймер: http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html