如何在Go语言中读取CSV文件?
要在**Go**中读取CSV文件,首先需要使用**Go**标准库提供的**encoding/csv**包。**encoding/csv**包包含不同的函数和方法,可用于读取CSV文件中的数据。
在本文中,我们将使用该包提供的**NewReader()**函数,该函数接受一个参数,即我们要打开的文件,然后在该文件上调用**ReadAll()**方法。
除了**encoding/csv**包外,我们还将使用os包,其中包含用于打开CSV文件的**Open**函数。
CSV数据
假设我们有一个名为**sampleFile.csv**的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文件的所有内容读取到一个**结构体**中,然后打印这些键值对。请考虑以下代码,它将允许我们这样做。(此处应插入Go代码示例)
示例
请考虑以下代码。
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
广告