如何在 Golang 中读取 CSV 文件?
go programmingserver side programmingprogramming
要在 Go 中读取 CSV 文件,我们首先需要使用 Go 标准库提供的 encoding/csv 包。 encoding/csv 包包含各种函数和方法,可用于从 CSV 文件读取数据。
在本文中,我们将使用该包提供的 NewReader() 函数,该函数接受一个参数,即我们要打开的文件,然后对该文件调用 ReadAll() 方法。
除了 encoding/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) { // 打开 CSV 文件 fileContent, err := os.Open(filename) if err != nil { return [][]string{}, err } defer fileContent.Close() // 将文件读入变量 lines, err := csv.NewReader(fileContent).ReadAll() if err != nil { return [][]string{}, err } return lines, nil }
在上述代码的 main 函数中,我们调用了 ReadCsvFile 函数,并在其中传递了文件名,然后调用 os 包的 NewReader() 函数,最后调用 struct 并填充其中的字段。
现在,下一步是以任意名称保存文件,然后运行命令 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