Golang leste CSV

Golang leste CSV
Komma -separerte verdier eller CSV er et dataformat der hver linje er en datapost. Hver post inneholder ett eller flere felt, med hvert felt atskilt med komma. CSV er veldig populær innen eksport- og importoperasjoner for databaser og regneark. Dette er fordi de er komprimerte og enkle å eksportere.

Gjennom denne artikkelen vil vi lære å lese og skrive til en CSV -fil ved hjelp av Go -programmeringsspråket.

Golang -koding/CSV

For å håndtere CSV -filene i Go -programmering, bruker vi koding/CSV -pakken. Den leveres med funksjoner for å lese og skrive CSV -filer. Husk at en ny linje representerer en enkelt post i en CSV -fil. Hver linje kan ha ett eller flere felt som ser bort fra eventuelle hvitromstegn.

For å bruke pakken, kan vi importere den som:

Importer “koding/csv”

Vi kan nå fortsette og lære å jobbe med CSV -filer i Go.

Golang les CSV - linje for linje

For å lese en CSV -fil ved hjelp av koding/CSV -pakken, bruker vi lest () -metoden. La oss anta at vi har en fil som heter:

brukerinformasjon.CSV

Filen inneholder informasjon om brukere som vist i prøvenes øyeblikksbilde nedenfor:

id, første navn, etternavn, e -post, e -post2, yrke
100, Blondelle, Strephon, [email protected], [email protected], front-end utvikler
101, Sissy, Hutchison, [email protected], [email protected], DevOps ingeniør
102, Babita, Loeb, [email protected], [email protected], spillutvikler
103, Tomasina, Letsou, [email protected], [email protected], back-end utvikler

Tenk på følgende eksempelkode:

pakkehoved
import (
"Koding/CSV"
"FMT"
"io"
"Logg"
"OS"
)
func main ()
Fil, feil: = OS.Åpne ("user_info.CSV ")
Hvis feil != nil
Logg.Fatal (feil)

Leser: = CSV.NewReader (fil)
for
hver_record, feil: = leser.Lese()
Hvis feil != nil || err == io.Eof
Logg.Fatal (feil)
gå i stykker

for verdi: = rekkevidde hver_record
fmt.Printf ("%s \ n", hver_record [verdi])


La oss bryte ned den forrige koden for å forstå bedre hvordan den fungerer.

Vi starter med å importere de nødvendige pakkene: koding/CSV, FMT, IO, Log og OS. FMT -pakken lar oss utføre I/O -operasjoner. Loggpakken brukes til å logge eventuelle feil som kan oppstå i programmet.

På den annen side brukes IO -pakkemetoden til å spesifisere IO.Lesergrensesnitt. Vi bruker EOF -feilen for å bestemme enden av en datastrøm.

Endelig har vi OS -pakken. I vårt eksempel bruker vi denne pakken til å lese CSV -filen.

I hovedfunksjonen starter vi med å åpne CSV -filen for lesing ved hjelp av OS.Åpen () -metode. Vi oppretter en ny leser ved hjelp av CSV.NewReader () -metode. Denne metoden tar en IO.Lesertype.

Neste trinn innebærer å bruke en for loop for å lese hver post fra CSV -filen. Deretter sjekker vi om det oppstår noen feil. Hvis det er noen feil, inkludert en EOF, bryter vi sløyfen og logger feilen.

Det siste trinnet er å iterere over hver post av CSV -filen og returnere verdiene.

Den forrige koden skal returnere en prøveutgang som vist nedenfor:

id
fornavn
etternavn
e -post
E -post2
yrke
100
Blondel
Strephon
[email protected]
[email protected]
Front-end utvikler
-------------------Output avkortet-----------------------

Hvis du vil lese CSV -en på en gang, bruker du Readall () -metoden i stedet for å lese ().

CSV med tilpasset avgrensning

Noen ganger kan du komme over en CSV -fil som ikke bruker komma som avgrenseren. Selv om du følger formatet til en CSV -fil, kan filer med tilpassede avgrensere utgjøre en utfordring når du analyserer.

Vi kan imidlertid spesifisere komma og kommentar i Go -programmering. Ta følgende eksempel på CSV -filen:

id; første navn; etternavn; e -post; e -post2; yrke
100; blondel; Strephon; [email protected]; [email protected]; front-end utvikler
101; Sissy; Hutchison; [email protected]; [email protected]; devops ingeniør
102; Babita; Loeb; [email protected]; [email protected]; spillutvikler
103; Tomasina; Larsou; [email protected]; [email protected]; back-end utvikler

Selv om filen følger et lignende format som en CSV-fil, bruker den semikoloner som avgrensere i stedet for et komma.

For å analysere den forrige filen i Go, kan vi kjøre koden som vist nedenfor:

pakkehoved
import (
"Koding/CSV"
"FMT"
"Logg"
"OS"
)
func main ()
Fil, feil: = OS.Åpne ("user_info.CSV ")
Hvis feil != nil
Logg.Fatal (feil)

Leser: = CSV.NewReader (fil)
leser.Komma = ';'
hver_record, feil: = leser.LESEALT ()
Hvis feil != nil
Logg.Fatal (feil)

fmt.Println (hver_record)

Den forrige koden spesifiserer en tilpasset avgrenser ved hjelp av leseren.Komma.

Hvis du vil fjerne ledende rom, kan du angi verdien:

leser. TrimleadingsPace = True

Golang CSV Writ

For å skrive en CSV -post til filen, bruker vi skrivefunksjonen. Plata er en skive strengverdier, med hver streng som representerer et enkelt felt.

Merk: Siden disse er buffret, må du ringe Flush for å sikre at den skriver plata til den opprinnelige forfatteren.

Tenk på eksemplet nedenfor:

pakkehoved
import (
"Koding/CSV"
"Logg"
"OS"
)
func main ()
new_records: = [] [] streng
"Larine", "Oriana", "[email protected] "," [email protected] "," back-end utvikler "
Fil, feil: = OS.Opprette ("new_file.CSV ")
utsett fil.Lukk()
Hvis feil != nil
Logg.Fatal (feil)

Forfatter: = CSV.Newwriter (fil)
utsetter forfatter.Flush ()
for _, post: = rekkevidde new_records
Hvis feil: = forfatter.Skriv (post); feil != nil
Logg.Fatal (feil)


Den forrige koden oppretter de spesifiserte CSV -filene og legger postene til filen.

Hvis du ikke vil ringe flush manuelt, kan du bruke Writeall () -metoden. Det kaller flush -metoden automatisk.

Konklusjon

Denne guiden utforsker hvordan du jobber med CSV -filer ved hjelp av Go Encoding/CSV -pakken. Vi håper du fant denne artikkelen nyttig. Sjekk ut andre Linux -hint -artikler for å lære flere tips.