Golang leu CSV

Golang leu CSV
Valores separados por vírgula ou CSV é um formato de dados em que cada linha é um registro de dados. Cada registro contém um ou mais campos, com cada campo separado por vírgulas. O CSV é muito popular nas operações de exportação e importação para bancos de dados e planilhas. Isso ocorre porque eles são compactados e fáceis de exportar.

Ao longo deste artigo, aprenderemos a ler e escrever em um arquivo CSV usando a linguagem de programação Go.

Golang Coding/CSV

Para lidar com os arquivos CSV na programação Go, usaremos o pacote de codificação/CSV. Ele vem repleto de funções para ler e escrever arquivos CSV. Lembre -se de uma nova linha representa um único registro em um arquivo CSV. Cada linha pode ter um ou mais campos desconsiderando qualquer espaço em branco.

Para usar o pacote, podemos importá -lo como:

importar “codificação/csv”

Agora podemos prosseguir e aprender a trabalhar com os arquivos CSV em Go.

Golang leu CSV - linha por linha

Para ler um arquivo CSV usando o pacote de codificação/CSV, usamos o método read (). Vamos supor que tenhamos um arquivo chamado:

informação de usuário.CSV

O arquivo contém informações sobre os usuários, conforme mostrado na amostra instantânea abaixo:

ID, primeiro nome, último nome, e -mail, email2, profissão
100, Blondelle, Strephon, [email protected], [email protected], desenvolvedor de front-end
101, Sissy, Hutchison, [email protected], [email protected], DevOps Engineer
102, Babita, Loeb, [email protected], [email protected], desenvolvedor de jogos
103, Tomasina, Letsou, [email protected], [email protected], desenvolvedor de back-end

Considere o seguinte código de exemplo:

Pacote principal
importação (
"Codificação/CSV"
"FMT"
"io"
"registro"
"OS"
)
func main ()
Arquivo, Err: = OS.Aberto ("user_info.CSV ")
se err != nil
registro.Fatal (ERR)

Leitor: = CSV.NewReader (arquivo)
para
cada_record, err: = leitor.Ler()
se err != nil || err == io.Eof
registro.Fatal (ERR)
quebrar

para valor: = alcance cada_record
fmt.Printf ("%s \ n", cada_record [valor])


Vamos quebrar o código anterior para entender melhor como funciona.

Começamos importando os pacotes necessários: codificação/csv, fmt, io, log e os. O pacote FMT nos permite realizar operações de E/S. O pacote de log é usado para registrar quaisquer erros que possam ocorrer no programa.

Por outro lado, o método do pacote de IO é usado para especificar o IO.Interface do leitor. Usamos o erro EOF para determinar o final de um fluxo de dados.

Finalmente, temos o pacote do sistema operacional. Em nosso exemplo, usamos este pacote para ler o arquivo CSV.

Na função principal, começamos abrindo o arquivo CSV para leitura usando o sistema operacional.Método Open (). Em seguida, criamos um novo leitor usando o CSV.Método newReader (). Este método leva um IO.Tipo de leitor.

A próxima etapa envolve o uso de um loop para ler cada registro do arquivo CSV. Então, verificamos se algum erro é encontrado. Se houver algum erro, incluindo um EOF, quebramos o loop e registramos o erro.

O último passo é iterar em cada registro do arquivo CSV e retornar os valores.

O código anterior deve retornar uma saída de amostra como mostrado abaixo:

eu ia
primeiro nome
sobrenome
e-mail
Email2
profissão
100
Loira
Strephon
[email protected]
[email protected]
desenvolvedor front-end
-------------------Saída truncada-----------------------

Se você quiser ler o CSV de uma só vez, use o método readall () em vez de read ().

CSV com delimitador personalizado

Às vezes, você pode encontrar um arquivo CSV que não usa vírgulas como delimitador. Embora seguindo o formato de um arquivo CSV, os arquivos com delimitadores personalizados podem representar um desafio ao analisar.

No entanto, podemos especificar a vírgula e o comentário na programação Go. Veja o seguinte exemplo do arquivo CSV:

Id; FirstName; LastName; email; email2; profissão
100; Blondelle; Strephon; [email protected]; [email protected]; desenvolvedor de front-end
101; Sissy; Hutchison; [email protected]; [email protected] de DevOps
102; Babita; Loeb; [email protected]; [email protected]; desenvolvedor de jogos
103; Tomasina; Letsou; [email protected]; [email protected]; desenvolvedor de back-end

Embora o arquivo siga um formato semelhante a um arquivo CSV, ele usa Semi-Colon como delimitadores em vez de uma vírgula.

Para analisar o arquivo anterior em Go, podemos executar o código como mostrado abaixo:

Pacote principal
importação (
"Codificação/CSV"
"FMT"
"registro"
"OS"
)
func main ()
Arquivo, Err: = OS.Aberto ("user_info.CSV ")
se err != nil
registro.Fatal (ERR)

Leitor: = CSV.NewReader (arquivo)
leitor.Vírgula = ';'
cada_record, err: = leitor.Leia tudo()
se err != nil
registro.Fatal (ERR)

fmt.Println (cada_record)

O código anterior especifica um delimitador personalizado usando o leitor.Vírgula.

Se você deseja remover os espaços principais, pode definir o valor:

leitor. Trimleadingspace = true

Golang CSV Escreva

Para escrever um registro CSV no arquivo, usamos a função de gravação. O registro é uma fatia de valores de string, com cada string representando um único campo.

Nota: Como estes são bobes, você deve ligar para Flush para garantir que ele grava o registro no escritor original.

Considere o exemplo abaixo:

Pacote principal
importação (
"Codificação/CSV"
"registro"
"OS"
)
func main ()
new_records: = [] [] string
"Larine", "Oriana", "[email protected] "," [email protected] "," desenvolvedor de back-end "
Arquivo, Err: = OS.Create ("new_file.CSV ")
Arquivo de adiamento.Fechar()
se err != nil
registro.Fatal (ERR)

Escritor: = CSV.NewWriter (arquivo)
adiar escritor.Rubor()
Para _, registro: = range new_records
se err: = escritor.Gravar (registro); errar != nil
registro.Fatal (ERR)


O código anterior cria os arquivos CSV especificados e adiciona os registros ao arquivo.

Se você não quiser ligar para o Flush Manualmente, pode usar o método writeAll (). Ele chama o método de descarga automaticamente.

Conclusão

Este guia explora como trabalhar com arquivos CSV usando o pacote Go Coding/CSV. Esperamos que você tenha achado este artigo útil. Confira outros artigos de dica do Linux para aprender mais dicas.