Golang Leer CSV

Golang Leer CSV
Los valores separados por comas o CSV es un formato de datos donde cada línea es un registro de datos. Cada registro contiene uno o más campos, con cada campo separado por comas. CSV es muy popular en las operaciones de exportación e importación para bases de datos y hojas de cálculo. Esto se debe a que están comprimidos y fáciles de exportar.

A lo largo de este artículo, aprenderemos a leer y escribir en un archivo CSV utilizando el lenguaje de programación GO.

Golang Codificación/CSV

Para manejar los archivos CSV en la programación GO, usaremos el paquete de codificación/CSV. Viene lleno de funciones para leer y escribir archivos CSV. Tenga en cuenta que una nueva línea representa un solo registro en un archivo CSV. Cada línea puede tener uno o más campos que no tienen en cuenta los personajes de espacios en blanco.

Para usar el paquete, podemos importarlo como:

Importar "Codificación/CSV"

Ahora podemos continuar y aprender a trabajar con archivos CSV en Go.

Golang Leer CSV - Línea por línea

Para leer un archivo CSV utilizando el paquete de codificación/CSV, usamos el método Read (). Supongamos que tenemos un archivo llamado:

Información de usuario.CSV

El archivo contiene información sobre los usuarios como se muestra en la instantánea de muestra a continuación:

id, primer nombre, último nombre, correo electrónico, correo electrónico2, profesión
100, rubio, strephon, [email protected], [email protected], desarrollador front-end
101, Sissy, Hutchison, [email protected], [email protected], ingeniero de DevOps
102, Babita, Loeb, [email protected], [email protected], desarrollador de juegos
103, Tomasina, Letsou, [email protected], [email protected], desarrollador de back-end

Considere el siguiente código de ejemplo:

paquete principal
importar (
"Codificación/CSV"
"FMT"
"IO"
"registro"
"OS"
)
func Main ()
Archivo, err: = OS.Abrir ("User_info.CSV ")
Si err != nulo
registro.Fatal (err)

Lector: = CSV.NewReader (archivo)
para
cada_record, err: = lector.Leer()
Si err != nulo || err == IO.EOF
registro.Fatal (err)
romper

Para el valor: = rango cada uno_record
fmt.Printf ("%s \ n", cada uno_record [valor])


Desglosemos el código anterior para comprender mejor cómo funciona.

Comenzamos importando los paquetes requeridos: codificación/CSV, FMT, IO, log y OS. El paquete FMT nos permite realizar operaciones de E/S. El paquete de registro se utiliza para registrar cualquier error que pueda ocurrir en el programa.

Por otro lado, el método del paquete IO se usa para especificar el IO.Interfaz del lector. Usamos el error EOF para determinar el final de un flujo de datos.

Finalmente, tenemos el paquete del sistema operativo. En nuestro ejemplo, usamos este paquete para leer el archivo CSV.

En la función principal, comenzamos abriendo el archivo CSV para leer usando el sistema operativo.Open () Método. Luego creamos un nuevo lector usando el CSV.Método newreader (). Este método toma un IO.Tipo de lector.

El siguiente paso implica usar un bucle para leer cada registro del archivo CSV. Luego, verificamos si se encuentra algún error. Si hay algún error, incluido un EOF, rompemos el bucle y registramos el error.

El último paso es iterar sobre cada registro del archivo CSV y devolver los valores.

El código anterior debe devolver una salida de muestra como se muestra a continuación:

identificación
nombre de pila
apellido
correo electrónico
correo electrónico2
profesión
100
Rubio
Strephon
[email protected]
[email protected]
desarrollador frontal
-------------------Salida truncada-----------------------

Si desea leer el CSV a la vez, use el método Readall () en lugar de Read ().

CSV con delimitador personalizado

A veces, puede encontrar un archivo CSV que no usa comas como delimitador. Aunque siguiendo el formato de un archivo CSV, los archivos con delimitadores personalizados pueden representar un desafío al analizar.

Sin embargo, podemos especificar la coma y el comentario en la programación de GO. Tome el siguiente ejemplo del archivo CSV:

id; firstName; LastName; correo electrónico; correo electrónico2; profesión
100; rubio; strephon; [email protected]; [email protected]; desarrollador front-end
101; mariquita; hutchison; [email protected]@Gmail.com; ingeniero de DevOps
102; babita; loeb; [email protected]; [email protected]; desarrollador de juegos
103; Tomasina; Letsou; [email protected]; [email protected]; desarrollador de fondo

Aunque el archivo sigue un formato similar a un archivo CSV, utiliza semicolones como delimitadores en lugar de una coma.

Para analizar el archivo anterior en GO, podemos ejecutar el código como se muestra a continuación:

paquete principal
importar (
"Codificación/CSV"
"FMT"
"registro"
"OS"
)
func Main ()
Archivo, err: = OS.Abrir ("User_info.CSV ")
Si err != nulo
registro.Fatal (err)

Lector: = CSV.NewReader (archivo)
lector.Coma = ';'
cada_record, err: = lector.Lee todo()
Si err != nulo
registro.Fatal (err)

fmt.Println (cada_record)

El código anterior especifica un delimitador personalizado utilizando el lector.Coma.

Si desea eliminar los espacios principales, puede establecer el valor:

lector. TrimLeadingSpace = True

Golang CSV Write

Para escribir un registro de CSV en el archivo, usamos la función de escritura. El registro es una porción de valores de cadena, con cada cadena que representa un solo campo.

NOTA: Dado que estos se amortiguan, debe llamar a Flush para asegurarse de que escriba el disco al escritor original.

Considere el ejemplo a continuación:

paquete principal
importar (
"Codificación/CSV"
"registro"
"OS"
)
func Main ()
new_records: = [] [] cadena
"Larine", "Oriana", "[email protected] "," [email protected] "," desarrollador de fondo "
Archivo, err: = OS.Crear ("new_file.CSV ")
aplazar el archivo.Cerca()
Si err != nulo
registro.Fatal (err)

escritor: = CSV.Newwriter (archivo)
referir escritor.Enjuagar()
para _, registro: = range new_records
Si err: = escritor.Escribir (registro); errar != nulo
registro.Fatal (err)


El código anterior crea los archivos CSV especificados y agrega los registros al archivo.

Si no desea llamar a Flush manualmente, puede usar el método WriteAll (). Llama al método de descarga automáticamente.

Conclusión

Esta guía explora cómo trabajar con archivos CSV utilizando el paquete GO Coding/CSV. Esperamos que hayas encontrado este artículo útil. Echa un vistazo a otros artículos de tinción de Linux para obtener más consejos.