Go:
Arbeide med CSV

Hvordan:

Å jobbe med CSV-filer i Go er greit, takket være standardbiblioteket, encoding/csv. Nedenfor er en grunnleggende gjennomgang på hvordan lese og skrive CSV-filer.

Lese en CSV-fil

For å lese fra en CSV-fil, åpner du først filen ved hjelp av os.Open, deretter oppretter du en ny CSV-leser med csv.NewReader.

package main

import (
    "encoding/csv"
    "fmt"
    "os"
)

func main() {
    file, err := os.Open("data.csv")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    reader := csv.NewReader(file)
    records, err := reader.ReadAll()
    if err != nil {
        panic(err)
    }

    for _, record := range records {
        fmt.Println(record)
    }
}

Denne kodesnutten vil lese alle poster fra data.csv og skrive dem ut. Hver post er en skive av felt.

Skrive til en CSV-fil

For skriving, bruker du csv.NewWriter og writer.WriteAll eller writer.Write for å skrive flere eller enkelt CSV-poster, henholdsvis.

package main

import (
    "encoding/csv"
    "os"
)

func main() {
    file, err := os.Create("output.csv")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    writer := csv.NewWriter(file)
    defer writer.Flush()

    records := [][]string{
        {"Name", "Age", "City"},
        {"John Doe", "30", "New York"},
        {"Jane Doe", "27", "Los Angeles"},
    }

    if err := writer.WriteAll(records); err != nil {
        panic(err)
    }
}

Dette vil skape en fil med navnet output.csv med de oppgitte postene. Husk alltid å tømme skrivebufferen for å sikre at alle bufrede data skrives til filen.

Dypdykk

Go encoding/csv-pakken gir robust støtte for lesing og skriving av CSV-filer, men den er designet med enkelhet i tankene, noe som betyr at den ikke håndterer mer komplekse scenarioer som automatisk oppdagelse av skilletegn, håndtering av sitater eller innebygde linjeskift i felt uten manuell håndtering.

Historisk har håndtering av CSV i programmeringsspråk ofte vært omstendelig på grunn av disse kompleksitetene, men Gos standardbibliotek abstraherer mange av disse problemene, slik at utviklere kan jobbe med CSV-data med relativ letthet. For mer kompleks CSV-manipulasjon kan det imidlertid være nødvendig med tredjepartsbiblioteker som gocsv eller å håndtere parsing manuelt.

Et bemerkelsesverdig aspekt ved Gos csv-pakke er dens støtte for å spesifisere egendefinert komma (skilletegn), som gjør at den kan arbeide sømløst med varianter av CSV-filer, som tab-separerte verdier (TSV). Men, når du håndterer svært uregelmessige eller ikke-standard CSV-filer, kan Go-programmerere finne seg selv å måtte utvide de eksisterende csv-leser- eller skriverimplementasjonene.

Selv om Gos CSV-håndteringsfunksjoner er robuste for generelle formål, for applikasjoner som krever intensiv datamanipulasjon, som datavitenskap eller komplekse datatransformasjonsoppgaver, kan programmerere undersøke dedikerte dataprosesseringspakker eller til og med andre språk som er bedre egnet til disse oppgavene, som Python med sitt pandas-bibliotek. Likevel, for rettfram CSV-les-skriv-operasjoner, står Gos standardbibliotek ut for sin effektivitet og enkelhet.