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.