如何在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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP