Golang leggi CSV

Golang leggi CSV
Valori separati da virgola o CSV è un formato di dati in cui ogni riga è un record di dati. Ogni record contiene uno o più campi, con ciascun campo separato da virgole. CSV è molto popolare nelle operazioni di esportazione e importazione per database e fogli di calcolo. Questo perché sono compressi e facili da esportare.

Nel corso di questo articolo, impareremo come leggere e scrivere su un file CSV usando il linguaggio di programmazione Go.

Codifica Golang/CSV

Per gestire i file CSV nella programmazione GO, useremo il pacchetto di codifica/CSV. Viene ricco di funzioni per la lettura e la scrittura di file CSV. Tieni presente che una nuova riga rappresenta un singolo record in un file CSV. Ogni riga può avere uno o più campi che ignorano i caratteri di spazi bianchi.

Per utilizzare il pacchetto, possiamo importarlo come:

Importa "codifica/CSV"

Ora possiamo procedere e imparare a lavorare con i file CSV in GO.

Golang leggi CSV - riga per riga

Per leggere un file CSV utilizzando il pacchetto codifica/CSV, utilizziamo il metodo read (). Supponiamo che abbiamo un file chiamato:

user_info.CSV

Il file contiene informazioni sugli utenti come mostrato nell'istantanea di esempio di seguito:

Id, firstname, lastname, email, email2, professione
100, Blondelle, Strephon, [email protected], [email protected], sviluppatore front-end
101, Sissy, Hutchison, [email protected], [email protected], ingegnere DevOps
102, Babita, Loeb, [email protected], [email protected], sviluppatore di giochi
103, Tomasina, Letsou, [email protected], [email protected], sviluppatore di back-end

Considera il seguente codice di esempio:

Pacchetto principale
importazione (
"Codifica/CSV"
"FMT"
"io"
"tronco d'albero"
"OS"
)
func main ()
File, err: = OS.Apri ("user_info.CSV ")
Se err != nil
tronco d'albero.Fatale (err)

lettore: = CSV.NewReader (file)
per
ogni_record, err: = lettore.Leggere()
Se err != nil || err == io.Eof
tronco d'albero.Fatale (err)
rottura

per valore: = intervallo ogni_record
fmt.Printf ("%s \ n", ciascuno_record [valore])


Abbattiamo il codice precedente per capire meglio come funziona.

Iniziamo importando i pacchetti richiesti: codifica/CSV, FMT, IO, log e OS. Il pacchetto FMT ci consente di eseguire operazioni I/O. Il pacchetto di registro viene utilizzato per registrare eventuali errori che possono verificarsi nel programma.

D'altra parte, il metodo del pacchetto IO viene utilizzato per specificare l'IO.Interfaccia del lettore. Usiamo l'errore EOF per determinare la fine di un flusso di dati.

Infine, abbiamo il pacchetto del sistema operativo. Nel nostro esempio, utilizziamo questo pacchetto per leggere il file CSV.

Nella funzione principale, iniziamo aprendo il file CSV per la lettura usando il sistema operativo.Metodo aperto (). Quindi creiamo un nuovo lettore usando il CSV.Metodo newReader (). Questo metodo prende un IO.Tipo di lettore.

Il passo successivo prevede l'utilizzo di un ciclo per leggere ogni record dal file CSV. Quindi, controlliamo se si verifica un errore. Se c'è qualche errore, incluso un EOF, rompe il ciclo e regisiamo l'errore.

L'ultimo passo è quello di iterare su ogni record del file CSV e restituire i valori.

Il codice precedente dovrebbe restituire un output di esempio come mostrato di seguito:

id
nome di battesimo
cognome
e-mail
email2
professione
100
Blondella
Strephon
[email protected]
[email protected]
sviluppatore Front End
-------------------Output troncato-----------------------

Se si desidera leggere il CSV tutto in una volta, usa il metodo Readall () invece di read ().

CSV con delimitatore personalizzato

A volte, potresti imbatterti in un file CSV che non utilizza virgole come delimitatore. Sebbene seguendo il formato di un file CSV, i file con delimitatori personalizzati possono rappresentare una sfida durante l'analisi.

Tuttavia, possiamo specificare la virgola e il commento nella programmazione GO. Prendi il seguente esempio del file CSV:

id; firstname; lastname; email; email; professione
100; Blondelle; Strephon; [email protected]; [email protected]; sviluppatore front-end
101; Sissy; Hutchison; [email protected]; [email protected]; ingegnere DevOps
102; Babita; Loeb; [email protected]; [email protected]; sviluppatore di giochi
103; Tomasina; LetSou; [email protected]; [email protected]; sviluppatore di back-end

Sebbene il file segua un formato simile a un file CSV, utilizza i semi-colons come delimitatori anziché una virgola.

Per analizzare il file precedente in GO, possiamo eseguire il codice come mostrato di seguito:

Pacchetto principale
importazione (
"Codifica/CSV"
"FMT"
"tronco d'albero"
"OS"
)
func main ()
File, err: = OS.Apri ("user_info.CSV ")
Se err != nil
tronco d'albero.Fatale (err)

lettore: = CSV.NewReader (file)
lettore.Virgola = ';'
ogni_record, err: = lettore.Leggi tutto()
Se err != nil
tronco d'albero.Fatale (err)

fmt.Println (ogni_record)

Il codice precedente specifica un delimitatore personalizzato utilizzando il lettore.Virgola.

Se si desidera rimuovere gli spazi principali, è possibile impostare il valore:

lettore. Trimleadingspace = true

Golang CSV Scrivi

Per scrivere un record CSV nel file, utilizziamo la funzione di scrittura. Il record è una fetta di valori di stringa, con ogni stringa che rappresenta un singolo campo.

Nota: poiché questi sono bufferiti, è necessario chiamare il filo per assicurarti che scriva il record allo scrittore originale.

Considera l'esempio seguente:

Pacchetto principale
importazione (
"Codifica/CSV"
"tronco d'albero"
"OS"
)
func main ()
new_records: = [] [] string
"Larine", "Oriana", "[email protected] "," [email protected] "," sviluppatore back-end "
File, err: = OS.Crea ("new_file.CSV ")
DEFER FILE.Vicino()
Se err != nil
tronco d'albero.Fatale (err)

scrittore: = CSV.Newwriter (file)
Defer writer.Sciacquone()
per _, record: = range new_records
se err: = writer.Scrivere (record); err != nil
tronco d'albero.Fatale (err)


Il codice precedente crea i file CSV specificati e aggiunge i record al file.

Se non si desidera chiamare manualmente il filo, è possibile utilizzare il metodo WriteALL (). Chiama automaticamente il metodo a filo.

Conclusione

Questa guida esplora come lavorare con i file CSV utilizzando il pacchetto GO di codifica/CSV. Speriamo che tu abbia trovato questo articolo utile. Dai un'occhiata ad altri articoli di suggerimento Linux per imparare altri suggerimenti.