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