Golang 如何读取CSV文件

Golang 如何读取CSV文件

要在 Go 中读取CSV文件,我们首先需要利用 Go 标准库提供的 encoding/csv 包。 编码/csv 包包含了不同的函数和方法,当我们想从CSV文件中读取数据时,可以使用这些方法。

在本文中,我们将使用该包提供的 NewReader() 函数,该函数需要一个参数,基本上就是我们要打开的文件,然后对该文件也调用 ReadAll() 方法。

除了 编码/CSV 包,我们还将使用os包,它包含 Open 函数,将为我们打开CSV文件。

CSV数据

假设我们有一个名为 sampleFile.csv 的 CSV 文件,其中包含以下数据。

Series reference Description
PPIQ.SQU900000 PPI output index - All industries
PPIQ.SQU900001 PPI output index - All industries excl OOD
PPIQ.SQUC76745 PPI published output commodity - Transport support services
PPIQ.SQUCC3100 PPI output index level 3 - Wood product manufacturing
PPIQ.SQUCC3110 PPI output index level 4 - Wood product manufacturing
PPIQ.SQUFF0000 PPI output index level 1 - Wholesale trade
PPIQ.SQUFF1000 PPI output index level 2 - Wholesale trade
PPIQ.SQUFF1100 PPI output index level 3 - Wholesale trade

现在,我们要确保我们能够在Go中打开文件,然后将CSV文件的所有内容读入一个 结构 中,然后将这些对子也打印出来。考虑一下下面所示的代码,它将使我们能够做到这一点。

例子

请看下面的代码。

package main
import (
   "encoding/csv"
   "fmt"
   "os"
)
type CsvDataLines struct {
   Column1 string
   Column2 string
}
func main() {
   csvData, err := ReadCsvFile("sampleFile.csv")
   if err != nil {
      panic(err)
   }
   for _, line := range csvData {
      data := CsvDataLines{
         Column1: line[0],
         Column2: line[1],
      }
      fmt.Println(data.Column1 + " " + data.Column2)
   }
}
func ReadCsvFile(filename string) ([][]string, error) {
   // Open CSV file
   fileContent, err := os.Open(filename)
   if err != nil {
      return [][]string{}, err
   }
   defer fileContent.Close()

   // Read File into a Variable
   lines, err := csv.NewReader(fileContent).ReadAll()
   if err != nil {
      return [][]string{}, err
   }
   return lines, nil
}

在上述代码的主函数中,我们正在调用 ReadCsvFile 函数,在该函数中我们传递了文件名,然后我们调用了os包的 NewReader() 函数,最后,我们调用了 结构 并将字段填入其中。

现在,下一步是用你想要的任何名字保存文件,然后运行命令 go run main.go (我把文件保存为 main.go ) 。

输出

一旦我们运行上述命令,我们将在终端获得以下输出。

Series reference Description
PPIQ.SQU900000 PPI output index - All industries
PPIQ.SQU900001 PPI output index - All industries excl OOD
PPIQ.SQUC76745 PPI published output commodity - Transport support services
PPIQ.SQUCC3100 PPI output index level 3 - Wood product manufacturing
PPIQ.SQUCC3110 PPI output index level 4 - Wood product manufacturing
PPIQ.SQUFF0000 PPI output index level 1 - Wholesale trade
PPIQ.SQUFF1000 PPI output index level 2 - Wholesale trade
PPIQ.SQUFF1100 PPI output index level 3 - Wholesale trade

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程