Go:
Työskentely CSV:n kanssa

Kuinka:

CSV-tiedostojen käsittely Go:ssa on suoraviivaista sen standardikirjaston, encoding/csv, ansiosta. Alla on perusteet CSV-tiedostojen lukemisesta ja kirjoittamisesta.

CSV-tiedoston lukeminen

CSV-tiedostosta lukeminen aloitetaan avaamalla tiedosto käyttäen os.Open, jonka jälkeen luodaan uusi CSV-lukija komennolla 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)
    }
}

Tämä koodinpätkä lukee kaikki data.csv tiedoston tietueet ja tulostaa ne. Jokainen tietue on kenttien viipale.

Kirjoittaminen CSV-tiedostoon

Kirjoittaessa käytetään csv.NewWriter ja writer.WriteAll tai writer.Write komentoja usean tai yksittäisen CSV-tietueen kirjoittamiseen.

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)
    }
}

Tämä luo tiedoston nimeltä output.csv annetuilla tietueilla. Muista aina huuhdella kirjoitin varmistaaksesi, että kaikki puskuroitu tieto on kirjoitettu tiedostoon.

Syväsukellus

Go:n encoding/csv paketti tarjoaa vankan tuen CSV-tiedostojen lukemiseen ja kirjoittamiseen, mutta se on suunniteltu yksinkertaisuutta silmällä pitäen, mikä tarkoittaa ettei se käsittele monimutkaisempia tilanteita, kuten erottimien automaattista tunnistamista, lainausmerkkejä tai kenttiin sisällytettyjä rivinvaihtoja ilman manuaalista käsittelyä.

Historiallisesti CSV-käsittely ohjelmointikielissä on usein ollut hankalaa näiden monimutkaisuuksien vuoksi, mutta Gon standardikirjasto abstrahoi monia näistä ongelmista, mahdollistaen kehittäjien työskennellä CSV-tiedon kanssa suhteellisen helposti. Monimutkaisempaan CSV-käsittelyyn saattaa kuitenkin tarvita kolmansien osapuolien kirjastoja kuten gocsv tai käsittelyn tekeminen manuaalisesti.

Eräs merkittävä Gon csv paketin piirre on tuen tarjoaminen mukautetulle pilkulle (erotin), mikä mahdollistaa sen sujuvan toiminnan CSV-tiedostojen varianttien, kuten tabilla erotettujen arvojen (TSV) kanssa. Kuitenkin, käsitellessä erittäin epäsäännöllisiä tai standardin ulkopuolisia CSV-tiedostoja, Go-ohjelmoijat saattavat huomata tarpeen laajentaa olemassa olevia csv-lukija- tai kirjoitinimplementaatioita.

Vaikka Gon CSV-käsittelykyvyt ovat vankat yleiskäyttöä varten, sovelluksissa, jotka vaativat intensiivistä datan manipulointia, kuten datatiede tai monimutkaiset datan muuntamistehtävät, ohjelmoijat saattavat tutkia omistautuneita datan käsittelypaketteja tai jopa muita tehtävään paremmin sopivia kieliä, kuten Pythonia sen pandas kirjaston kanssa. Siitä huolimatta suoraviivaisiin CSV luku-kirjoitusoperaatioihin Gon standardikirjasto erottuu tehokkuudellaan ja yksinkertaisuudellaan.