0Pricing
Ruby Academy · Урок

Работа с CSV

Библиотека csv

«Работа с CSV» — бесплатный урок Ruby Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.

Что такое CSV?

CSV (значения, разделённые запятыми) хранит табличные данные в виде обычного текста: одна строка на запись, поля разделены запятыми. Стандартная библиотека Ruby csv читает и записывает такие данные.

require 'csv'
row = CSV.parse_line('Alice,30,Engineer')
p row

Разбор строки CSV

CSV.parse преобразует многострочную строку CSV в массив строковых массивов.

require 'csv'
data = "name,age\nAlice,30\nBob,25"
rows = CSV.parse(data)
p rows

Использование заголовков

Передайте headers: true, чтобы первая строка стала именами полей, а каждая последующая строка работала как хеш.

require 'csv'
data = "name,age\nAlice,30"
CSV.parse(data, headers: true).each do |row|
  puts(row['name'])
  puts(row['age'])
end

Перебор строк

Вы можете перебирать разобранные строки как любой массив, обращаясь к полям по индексу.

require 'csv'
rows = CSV.parse("1,a\n2,b\n3,c")
rows.each { |r| puts "#{r[0]} -> #{r[1]}" }

Преобразование типов

Используйте converters: :numeric, чтобы автоматически преобразовать числовые поля в Integer или Float.

require 'csv'
rows = CSV.parse("10,20\n30,40", converters: :numeric)
puts(rows[0][0] + rows[1][1])

Создание CSV

CSV.generate создаёт строку CSV. Добавляйте массивы в блок, чтобы добавлять строки.

require 'csv'
out = CSV.generate do |csv|
  csv << ['name', 'age']
  csv << ['Alice', 30]
end
puts out

Кавычки и специальные символы

CSV автоматически заключает в кавычки поля, содержащие запятые, кавычки или переводы строк, чтобы структура оставалась неизменной.

require 'csv'
out = CSV.generate do |csv|
  csv << ['note', 'Hello, world']
end
puts out

Пользовательские разделители

Для файлов с разделителями-табуляциями или точками с запятой задайте col_sep. Это позволяет работать с TSV и европейскими вариантами CSV.

require 'csv'
rows = CSV.parse("a;b;c", col_sep: ';')
p rows

Запись в файл

CSV.open с режимом 'w' передаёт строки непосредственно в файл.

require 'csv'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'people.csv')
CSV.open(path, 'w') do |csv|
  csv << ['name', 'age']
  csv << ['Carol', 28]
end
puts(File.read(path))

Чтение из файла

CSV.read загружает весь файл в массив строк и принимает те же параметры, что и parse.

require 'csv'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'nums.csv')
File.write(path, "x,y\n1,2\n3,4")
rows = CSV.read(path, headers: true)
puts(rows.first['y'])

Суммирование столбца

Распространённая задача: прочитать столбец и вычислить его итоговое значение. Объедините заголовки, преобразование в числа и map.

require 'csv'
data = "item,price\npen,3\nbook,12"
total = CSV.parse(data, headers: true, converters: :numeric).sum { |r| r['price'] }
puts(total)

Быстрая проверка

Какой параметр позволяет обращаться к полям CSV по имени столбца, например row['age']?

Повторение: работа с CSV

Вы умеете работать с табличными данными:

  • CSV.parse / CSV.read для чтения
  • headers: true для именованных полей
  • converters: :numeric для значений с правильными типами
  • CSV.generate / CSV.open для записи
  • col_sep для TSV и других разделителей
require 'csv'
p CSV.parse_line('a,b,c')

Часто задаваемые вопросы

Урок «Работа с CSV» бесплатный?

Да — полный текст урока «Работа с CSV» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.

Чему я научусь в уроке «Работа с CSV»?

Библиотека csv Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ruby Academy?

Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Работа с CSV»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ruby Academy?

Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Чтение и запись JSON
  2. Работа с CSV
  3. Конфигурация YAML
  4. Выбор формата
← Назад к Ruby Academy