Elixir:
Travailler avec CSV
Comment faire :
Elixir, avec son puissant système de correspondance de motifs et son support pour le chaînage, peut gérer les fichiers CSV efficacement, même sans bibliothèques tierces. Cependant, pour des besoins plus avancés, la bibliothèque nimble_csv
est un choix rapide et simple.
Lire un fichier CSV Sans Bibliothèques Externes
Vous pouvez lire et analyser un fichier CSV en utilisant les fonctions intégrées d’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
# Exemple d'utilisation
CSVReader.read_file("data.csv")
# Sortie : [["Header1", "Header2"], ["Row1Value1", "Row1Value2"], ["Row2Value1", "Row2Value2"]]
Écrire dans un fichier CSV
De manière similaire, pour écrire des données dans un fichier 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
# Exemple d'utilisation
data = [["Header1", "Header2"], ["Value1", "Value2"], ["Value3", "Value4"]]
CSVWriter.write_to_file("output.csv", data)
# Crée output.csv avec les données formatées en CSV
Utiliser nimble_csv
Pour une manipulation plus complexe des CSV, nimble_csv
offre une manière puissante et flexible de travailler avec les données CSV. Tout d’abord, ajoutez nimble_csv
à vos dépendances dans mix.exs
et exécutez mix deps.get
:
defp deps do
[
{:nimble_csv, "~> 1.2"}
]
end
Analyser les données CSV avec 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
# Exemple d'utilisation
MyCSVParser.parse("data.csv")
# La sortie avec nimble_csv peut être personnalisée selon la définition, mais elle ressemble généralement à une liste de listes ou de tuples, selon la configuration de votre analyseur.
Écrire des données CSV en utilisant nimble_csv
nécessite de transformer manuellement vos données dans un format approprié puis de les écrire dans un fichier, un peu comme dans l’exemple d’Elixir simple, mais en exploitant nimble_csv
pour générer des rangées CSV correctement formatées.
En choisissant l’approche appropriée en fonction de la complexité de votre tâche, vous pouvez manipuler les fichiers CSV en Elixir avec une grande flexibilité et puissance.