Golang a lu CSV

Golang a lu CSV
Les valeurs séparées de virgule ou CSV sont un format de données où chaque ligne est un enregistrement de données. Chaque enregistrement contient un ou plusieurs champs, chaque champ séparé par des virgules. CSV est très populaire dans les opérations d'exportation et d'importation pour les bases de données et les feuilles de calcul. C'est parce qu'ils sont compressés et faciles à exporter.

Tout au long de cet article, nous apprendrons à lire et à écrire dans un fichier CSV à l'aide du langage de programmation Go.

Golang Encoding / CSV

Pour gérer les fichiers CSV dans la programmation GO, nous utiliserons le package d'encodage / CSV. Il est livré avec des fonctions pour lire et écrire des fichiers CSV. Gardez à l'esprit qu'une nouvelle ligne représente un seul enregistrement dans un fichier CSV. Chaque ligne peut avoir un ou plusieurs champs sans tenir compte des caractères blancs.

Pour utiliser le package, nous pouvons l'importer comme:

Importer «Encoding / CSV»

Nous pouvons maintenant procéder et apprendre à travailler avec les fichiers CSV dans Go.

Golang Lire CSV - ligne par ligne

Pour lire un fichier CSV à l'aide du package d'encodage / CSV, nous utilisons la méthode read (). Supposons que nous ayons un fichier appelé:

informations utilisateur.CSV

Le fichier contient des informations sur les utilisateurs comme indiqué dans l'exemple d'instantané ci-dessous:

id, firstname, lastname, e-mail, email2, profession
100, Blondelle, Strephe, Blondelle.Strephon @ yopmail.com, blondelle.Strephon @ gmail.com, développeur front-end
101, Sissy, Hutchison, Sissy.Hutchison @ yopmail.com, sissy.Hutchison @ gmail.com, ingénieur DevOps
102, Babita, Loeb, Babita.Loeb @ yopmail.com, babita.Loeb @ gmail.com, développeur de jeux
103, Tomasina, Letsou, Tomasina.Laissez @ yopmail.com, Tomasina.Laissez @ gmail.com, développeur back-end

Considérez l'exemple de code suivant:

package principal
importer (
"Encodage / CSV"
"FMT"
"Io"
"enregistrer"
"OS"
)
func main ()
fichier, err: = os.Ouvrir ("user_info.CSV ")
Si err != nil
enregistrer.Fatal (euh)

lecteur: = CSV.NewReader (fichier)
pour
chaque_record, err: = lecteur.Lire()
Si err != Nil || err == io.Eof
enregistrer.Fatal (euh)
casser

pour la valeur: = plage e chaque_record
fmt.Printf ("% s \ n", chaque_record [valeur])


Décomposons le code précédent pour mieux comprendre comment cela fonctionne.

Nous commençons par importer les packages requis: codage / CSV, FMT, IO, journal et système d'exploitation. Le package FMT nous permet d'effectuer des opérations d'E / S. Le package de journal est utilisé pour enregistrer toutes les erreurs qui peuvent survenir dans le programme.

D'un autre côté, la méthode du package IO est utilisée pour spécifier l'IO.Interface de lecteur. Nous utilisons l'erreur EOF pour déterminer la fin d'un flux de données.

Enfin, nous avons le package OS. Dans notre exemple, nous utilisons ce package pour lire le fichier CSV.

Dans la fonction principale, nous commençons par ouvrir le fichier CSV pour la lecture à l'aide du système d'exploitation.Méthode Open (). Nous créons ensuite un nouveau lecteur en utilisant le CSV.Méthode newReader (). Cette méthode prend un IO.Type de lecteur.

L'étape suivante consiste à utiliser une boucle pour lire chaque enregistrement à partir du fichier CSV. Ensuite, nous vérifions si une erreur est rencontrée. S'il y a une erreur, y compris un EOF, nous cassons la boucle et enregistrons l'erreur.

La dernière étape consiste à itérer sur chaque enregistrement du fichier CSV et à renvoyer les valeurs.

Le code précédent doit renvoyer un exemple de sortie comme indiqué ci-dessous:

identifiant
prénom
nom de famille
e-mail
Email2
profession
100
Blondelle
Strephe
Blondelle.Strephon @ yopmail.com
Blondelle.Strephon @ gmail.com
développeur frontal
-------------------Sortie tronquée-----------------------

Si vous souhaitez lire le CSV en une seule fois, utilisez la méthode readall () au lieu de read ().

CSV avec délimiteur personnalisé

Parfois, vous pouvez rencontrer un fichier CSV qui n'utilise pas de virgules comme délimiteur. Bien que suivant le format d'un fichier CSV, les fichiers avec des délimiteurs personnalisés peuvent poser un défi lors de l'analyse.

Cependant, nous pouvons spécifier la virgule et le commentaire dans la programmation Go. Prenez l'exemple suivant du fichier CSV:

id; firstName; LastName; e-mail; email2; profession
100; Blondelle; Strephere; Blondelle.Strephon @ yopmail.com; blondelle.Strephon @ gmail.com; développeur frontal
101; Sissy; Hutchison; Sissy.Hutchison @ yopmail.com; sissy.Hutchison @ gmail.com; ingénieur DevOps
102; Babita; Loeb; Babita.Loeb @ yopmail.com; babita.Loeb @ gmail.com; développeur de jeux
103; Tomasina; Letsou; Tomasina.Laissez @ yopmail.com; Tomasina.Laissez @ gmail.com; développeur back-end

Bien que le fichier suit un format similaire dans un fichier CSV, il utilise des demi-colons comme délimiteurs au lieu d'une virgule.

Pour analyser le fichier précédent en Go, nous pouvons exécuter le code comme indiqué ci-dessous:

package principal
importer (
"Encodage / CSV"
"FMT"
"enregistrer"
"OS"
)
func main ()
fichier, err: = os.Ouvrir ("user_info.CSV ")
Si err != nil
enregistrer.Fatal (euh)

lecteur: = CSV.NewReader (fichier)
lecteur.Virgule = ';'
chaque_record, err: = lecteur.Lis tout()
Si err != nil
enregistrer.Fatal (euh)

fmt.Println (chaque_record)

Le code précédent spécifie un délimiteur personnalisé à l'aide du lecteur.Virgule.

Si vous souhaitez supprimer les espaces principaux, vous pouvez définir la valeur:

lecteur. Trimleadingspace = true

Golang csv écriture

Pour écrire un enregistrement CSV dans le fichier, nous utilisons la fonction d'écriture. L'enregistrement est une tranche de valeurs de chaîne, chaque chaîne représentant un seul champ.

Remarque: Étant donné que ceux-ci sont tamponnés, vous devez appeler Flush pour vous assurer qu'il écrit l'enregistrement à l'écrivain original.

Considérez l'exemple ci-dessous:

package principal
importer (
"Encodage / CSV"
"enregistrer"
"OS"
)
func main ()
new_records: = [] [] String
"Larine", "Oriana", "Larine.Oriana @ Yopmail.com "," Larine.Oriana @ gmail.com "," développeur back-end "
fichier, err: = os.Créer ("new_file.CSV ")
fichier de report.Fermer()
Si err != nil
enregistrer.Fatal (euh)

écrivain: = CSV.NewWriter (fichier)
rédacteur.Affleurer()
pour _, enregistrer: = range new_records
Si err: = écrivain.Écrire (enregistrer); se tromper != nil
enregistrer.Fatal (euh)


Le code précédent crée les fichiers CSV spécifiés et ajoute les enregistrements au fichier.

Si vous ne souhaitez pas appeler Flush manuellement, vous pouvez utiliser la méthode WriteAll (). Il appelle automatiquement la méthode Flush.

Conclusion

Ce guide explore comment travailler avec les fichiers CSV à l'aide du package GO Encoding / CSV. Nous espérons que vous avez trouvé cet article utile. Consultez d'autres articles sur les indices Linux pour en savoir plus sur les conseils.