У Ruby Class: CSV
є частиною стандартної бібліотеки та використовується для роботи з файлами CSV (Comma-Separated Values). Це зручний інструмент для читання, запису та обробки даних у форматі CSV. Клас CSV
надає широкий спектр можливостей для роботи з цим популярним форматом даних, зокрема, обробляючи рядки та стовпці таблиці, де значення відділяються комами (або іншими розділювачами).
Можливості Class: CSV у Ruby та варіанти використання
1. Імпорт бібліотеки
Оскільки CSV
є частиною стандартної бібліотеки Ruby, ви можете використовувати його без додаткової інсталяції, просто підключивши бібліотеку:
require 'csv'
2. Читання файлу CSV
Найбільш поширене використання CSV
— це читання CSV-файлів. Для цього можна скористатися методом CSV.foreach
або CSV.read
.
-
CSV.foreach
: Читає файл построчно та передає кожний рядок як масив.CSV.foreach("data.csv") do |row| puts row.inspect end
-
CSV.read
: Читає весь файл і повертає двовимірний масив, де кожен підмасив — це рядок CSV.data = CSV.read("data.csv") puts data.inspect
3. Запис у файл CSV
Для запису даних у файл використовується метод CSV.open
або CSV.generate
.
-
CSV.open
: Відкриває файл у певному режимі (write
,append
тощо) і дозволяє записувати рядки у файл.CSV.open("data.csv", "w") do |csv| csv << ["Name", "Age", "City"] csv << ["John", 30, "New York"] csv << ["Jane", 25, "Los Angeles"] end
-
CSV.generate
: Генерує CSV-дані як рядок, який можна зберегти або вивести в консоль.csv_string = CSV.generate do |csv| csv << ["Name", "Age", "City"] csv << ["John", 30, "New York"] end puts csv_string
4. Налаштування розділювача
За замовчуванням, CSV
використовує кому як розділювач, але ви можете змінити його на інший символ, наприклад, крапку з комою:
CSV.foreach("data.csv", col_sep: ";") do |row|
puts row.inspect
end
5. Параметри роботи з CSV
Клас CSV
надає різноманітні опції для більш гнучкого налаштування:
-
headers:
Дозволяє працювати з файлами CSV, де є заголовки стовпців. Наприклад, можна встановити цю опцію вtrue
для автоматичної обробки заголовків:CSV.foreach("data.csv", headers: true) do |row| puts row["Name"] end
-
header_converters:
Перетворює заголовки стовпців, наприклад, в символи:CSV.foreach("data.csv", headers: true, header_converters: :symbol) do |row| puts row[:name] end
6. Обробка винятків
Якщо CSV-файл має неправильну структуру або виникають інші проблеми, Ruby може підняти винятки, зокрема CSV::MalformedCSVError
. Ви можете обробляти ці винятки для захисту коду від помилок:
begin
CSV.foreach("data.csv") do |row|
puts row.inspect
end
rescue CSV::MalformedCSVError => e
puts "Error reading CSV: #{e.message}"
end
Приклад:
require 'csv'
# Читання CSV-файлу з заголовками
CSV.foreach("data.csv", headers: true) do |row|
puts "Name: #{row['Name']}, Age: #{row['Age']}, City: #{row['City']}"
end
# Запис у CSV-файл
CSV.open("output.csv", "w") do |csv|
csv << ["Name", "Age", "City"]
csv << ["John", 30, "New York"]
csv << ["Jane", 25, "Los Angeles"]
end