Elixir:
Työskentely CSV:n kanssa
Kuinka:
Elixir, tehokkaan kuviohakunsa ja putkituensa ansiosta, pystyy käsittelemään CSV-tiedostoja tehokkaasti, jopa ilman kolmannen osapuolen kirjastoja. Kuitenkin, edistyneempiin tarpeisiin nimble_csv
-kirjasto on nopea ja suoraviivainen valinta.
CSV-tiedoston lukeminen ilman ulkoisia kirjastoja
Voit lukea ja jäsentää CSV-tiedoston käyttämällä Elixiring sisäänrakennettuja funktioita:
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
# Esimerkkikäyttö
CSVReader.read_file("data.csv")
# Tuloste: [["Otsikko1", "Otsikko2"], ["Rivi1Arvo1", "Rivi1Arvo2"], ["Rivi2Arvo1", "Rivi2Arvo2"]]
Kirjoittaminen CSV-tiedostoon
Samankaltaisesti, jos haluat kirjoittaa tietoja CSV-tiedostoon:
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
# Esimerkkikäyttö
data = [["Otsikko1", "Otsikko2"], ["Arvo1", "Arvo2"], ["Arvo3", "Arvo4"]]
CSVWriter.write_to_file("output.csv", data)
# Luo output.csv:n datalla muotoiltuna CSV:ksi
Käyttäen nimble_csv
:tä
Monimutkaisempiin CSV-käsittelyihin, nimble_csv
tarjoaa tehokkaan ja joustavan tavan työskennellä CSV-datan kanssa. Lisää ensin nimble_csv
riippuvuuksiisi mix.exs
-tiedostossa ja suorita mix deps.get
:
defp deps do
[
{:nimble_csv, "~> 1.2"}
]
end
CSV-datan jäsentäminen nimble_csv
:llä:
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
# Esimerkkikäyttö
MyCSVParser.parse("data.csv")
# Tuloste `nimble_csv`:n kanssa voidaan mukauttaa määritelmän mukaan, mutta yleensä se näyttää listalta listoja tai tupleja riippuen siitä, kuinka olet asettanut jäsentimesi.
CSV-datan kirjoittaminen nimble_csv
:llä vaatii manuaalista datasi muuntamista asianmukaiseen muotoon ja sitten sen kirjoittamista tiedostoon, paljon kuten pelkässä Elixirin esimerkissä mutta hyödyntäen nimble_csv
:tä oikein muotoiltujen CSV-rivien tuottamiseen.
Valitsemalla sopivan lähestymistavan tehtäväsi monimutkaisuuden mukaan, voit käsitellä CSV-tiedostoja Elixirissa suurella joustavuudella ja voimalla.