Ruby:
Arbeiten mit CSV

Wie geht das:

Ruby beinhaltet standardmäßig die CSV-Bibliothek, welche das Lesen von und Schreiben in CSV-Dateien vereinfacht. Hier ist, wie Sie dies für gängige Aufgaben nutzen können:

Eine CSV-Datei lesen

Um aus einer CSV-Datei zu lesen, benötigen Sie zunächst die CSV-Bibliothek. Dann können Sie über die Zeilen iterieren oder diese in ein Array einlesen.

require 'csv'

# Jede Zeile als Array lesen
CSV.foreach("data.csv") do |row|
  puts row.inspect
end

# Die Ausgabe für jede Zeile könnte so aussehen: ["data1", "data2", "data3"]

In eine CSV schreiben

In eine CSV-Datei zu schreiben ist ebenfalls unkompliziert. Sie können an eine vorhandene Datei anhängen oder eine neue Datei zum Schreiben erstellen.

require 'csv'

CSV.open("output.csv", "wb") do |csv|
  csv << ["header1", "header2", "header3"]
  csv << ["value1", "value2", "value3"]
end

# Dies erstellt oder überschreibt 'output.csv' mit den angegebenen Überschriften und Werten.

Einen CSV-String parsen

Manchmal müssen Sie CSV-Daten direkt aus einem String parsen. So geht’s:

require 'csv'

data = "name,age,city\nJohn Doe,29,New York\nJane Doe,31,Chicago"
csv = CSV.parse(data, headers: true)

csv.each do |row|
  puts "#{row['name']} - #{row['age']} - #{row['city']}"
end

# Erwartete Ausgabe:
# John Doe - 29 - New York
# Jane Doe - 31 - Chicago

SmarterCSV verwenden

Für komplexere CSV-Aufgaben kann das SmarterCSV-Gem ein wertvolles Werkzeug sein. Installieren Sie zuerst das Gem:

gem install smarter_csv

Dann können Sie es nutzen, um mit großen Dateien umzugehen oder eine anspruchsvollere Parsung und Manipulation durchzuführen:

require 'smarter_csv'

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

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

# Dadurch wird 'large_data.csv' gelesen und jede Zeile basierend auf den Überschriften als Hash ausgegeben.

Zusammenfassend bietet die eingebaute CSV-Bibliothek von Ruby zusammen mit Drittanbieter-Gems wie SmarterCSV robuste Unterstützung für die Handhabung von CSV-Daten, was effiziente Datenverarbeitungs- und Manipulationsaufgaben ermöglicht.