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.