iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
自我挑戰組

和地鼠做30天好朋友系列 第 10

地鼠和CSV

  • 分享至 

  • xImage
  •  

前一天我們講到了JSON, 現在我們也來講講另外一個常見的形式:csv

CSV(逗號分隔值)是一種常見的數據儲存格式,通常用於表格數據。通常你可以用excel或者numbers這些軟體去讀取它,甚或你可以用簡單的記事本、editor 去打開它

他大概長這個樣子

Name,Score
Jimmy,100

這裡會來表演如何使用Golang自帶的CSV庫來讀取和寫入CSV文件。

首先,我們來看如何讀取CSV吧。在下面的程式碼當中,我們定義了一個student struct,表示了一個學生的信息,包括姓名、中文成績、英文成績和電腦成績。我們使用encoding/csv包來讀取CSV文件,首先打開文件,然後設置CSV讀取器的分隔符為逗號。我們忽略了CSV文件的第一行(標題行),然後讀取一行數據,並使用strconv.Atoi函數將字符數據轉換為整數。最後,我們將讀取的數據放到student 中並輸出。

package main

import (
	"encoding/csv"
	"fmt"
	"os"
	"strconv"
)

func main() {
	type student struct {
		Name     string
		Chinese  int
		English  int
		Computer int
	}

	file, _ := os.Open("./example.csv") 
	defer file.Close()

	r := csv.NewReader(file)
	r.Comma = ','

	r.Read() //ignore first row (column)
	record, _ := r.Read()

	chinese, _ := strconv.Atoi(record[1])
	english, _ := strconv.Atoi(record[2])
	computer, _ := strconv.Atoi(record[3])

	var s = student{
		Name:     record[0],
		Chinese:  chinese,
		English:  english,
		Computer: computer,
	}

	fmt.Printf("Name %s \nChinese Score: %d \nEnglish Score: %d \nComputer Score: %d \n",
		s.Name, s.Chinese, s.English, s.Computer)
}

之後,我們來看如何寫一份CSV文件。在以下程式碼當中,我們先用os.Create建立一個空的CSV文件(其實就是建立檔案的流程啦,詳請可以看第四天的部分),然後建立一個csv.NewWriter。我們使用writer.WriteAll將資料寫入CSV文件......

package main

import (
	"encoding/csv"
	"fmt"
	"os"
)

func main() {
	f, _ := os.Create("./example.csv")

	writer := csv.NewWriter(f)
	err := writer.WriteAll([][]string{
		{"Name", "Score"},
		{"Jimmy", "100"},
	})

	if err != nil {
		fmt.Println("Write CSV Error !")
	} else {
		fmt.Println("Write CSV Success !")
	}
}

上一篇
地鼠和JSON
下一篇
地鼠 init 的魔法
系列文
和地鼠做30天好朋友12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言