Elixir:
Lavorare con i CSV
Come fare:
Elixir, con il suo potente pattern matching e il supporto per il pipeline, può gestire i file CSV in modo efficiente, anche senza librerie di terze parti. Tuttavia, per necessità più avanzate, la libreria nimble_csv
è una scelta rapida e diretta.
Leggere un File CSV Senza Librerie Esterne
Puoi leggere e analizzare un file CSV utilizzando le funzioni incorporate di Elixir:
defmodule CSVReader do
def read_file(file_path) do
File.stream!(file_path)
|> Stream.map(&String.trim_trailing/1)
|> Stream.map(&String.split(&1, ","))
|> Enum.to_list()
end
end
# Esempio di utilizzo
CSVReader.read_file("data.csv")
# Output: [["Intestazione1", "Intestazione2"], ["ValoreRiga1Elemento1", "ValoreRiga1Elemento2"], ["ValoreRiga2Elemento1", "ValoreRiga2Elemento2"]]
Scrivere in un File CSV
Similmente, per scrivere dati in un file CSV:
defmodule CSVWriter do
def write_to_file(file_path, data) do
File.open(file_path, [:write], fn file ->
Enum.each(data, fn row ->
IO.write(file, Enum.join(row, ",") <> "\n")
end)
end)
end
end
# Esempio di utilizzo
data = [["Intestazione1", "Intestazione2"], ["Valore1", "Valore2"], ["Valore3", "Valore4"]]
CSVWriter.write_to_file("output.csv", data)
# Crea output.csv con i dati formattati come CSV
Usare nimble_csv
Per la gestione di CSV più complessi, nimble_csv
offre un modo potente e flessibile di lavorare con i dati CSV. Prima di tutto, aggiungi nimble_csv
alle tue dipendenze in mix.exs
ed esegui mix deps.get
:
defp deps do
[
{:nimble_csv, "~> 1.2"}
]
end
Analizzare dati CSV con nimble_csv
:
defmodule MyCSVParser do
NimbleCSV.define(MyParser, separator: ",", escape: "\\")
def parse(file_path) do
file_path
|> File.stream!()
|> MyParser.parse_stream()
|> Enum.to_list()
end
end
# Esempio di utilizzo
MyCSVParser.parse("data.csv")
# L'output con nimble_csv può essere personalizzato in base alla definizione, ma in generale appare come una lista di liste o tuple a seconda di come configuri il tuo parser.
Scrivere dati CSV usando nimble_csv
richiede di trasformare manualmente i tuoi dati in un formato adeguato e poi scriverli su un file, molto simile all’esempio di Elixir semplice ma sfruttando nimble_csv
per generare righe CSV formattate correttamente.
Scegliendo l’approccio appropriato per la complessità del tuo compito, puoi gestire i file CSV in Elixir con grande flessibilità e potenza.