Ruby:
Praca z plikami CSV

Jak to zrobić:

Ruby domyślnie zawiera bibliotekę CSV, która upraszcza odczyt z i zapis do plików CSV. Oto jak możesz to wykorzystać do typowych zadań:

Odczyt pliku CSV

Aby odczytać plik CSV, najpierw wymagana jest biblioteka CSV. Następnie można iterować po wierszach lub odczytać je do tablicy.

require 'csv'

# Odczytywanie każdego wiersza jako tablicy
CSV.foreach("data.csv") do |row|
  puts row.inspect
end

# Wyjście dla każdego wiersza może wyglądać tak: ["data1", "data2", "data3"]

Zapis do CSV

Zapis do pliku CSV jest również prosty. Możesz dopisywać do istniejącego pliku lub utworzyć nowy plik do zapisu.

require 'csv'

CSV.open("output.csv", "wb") do |csv|
  csv << ["naglowek1", "naglowek2", "naglowek3"]
  csv << ["wartosc1", "wartosc2", "wartosc3"]
end

# To tworzy lub nadpisuje 'output.csv' z określonymi nagłówkami i wartościami.

Parsowanie łańcucha CSV

Czasami musisz parsować dane CSV bezpośrednio z ciągu znaków. Oto jak:

require 'csv'

data = "imie,wiek,miasto\nJan Kowalski,29,Nowy Jork\nAnna Nowak,31,Chicago"
csv = CSV.parse(data, headers: true)

csv.each do |row|
  puts "#{row['imie']} - #{row['wiek']} - #{row['miasto']}"
end

# Oczekiwane wyjście:
# Jan Kowalski - 29 - Nowy Jork
# Anna Nowak - 31 - Chicago

Korzystanie z SmarterCSV

Do bardziej skomplikowanych zadań związanych z CSV, gem SmarterCSV może być cennym narzędziem. Najpierw zainstaluj gem:

gem install smarter_csv

Następnie możesz go użyć do obsługi dużych plików lub wykonywania bardziej zaawansowanego parsowania i manipulacji:

require 'smarter_csv'

options = {}
data = SmarterCSV.process('duze_dane.csv', options)

data.each do |hash|
  puts hash.inspect
end

# To odczyta 'duze_dane.csv' i wyjście każdego wiersza jako hash bazujący na nagłówkach.

Podsumowując, wbudowana biblioteka CSV Ruby’ego wraz z gemami osób trzecich, takimi jak SmarterCSV, zapewnia solidne wsparcie dla obsługi danych CSV, umożliwiając wydajne zadania przetwarzania i manipulacji danymi.