📅  最后修改于: 2023-12-03 15:31:02.159000             🧑  作者: Mango
在 Golang 中,读取 CSV 文件可以使用内置的 encoding/csv
包。本文将介绍如何使用 Golang 读取 CSV 文件。
以下是一个简单的示例程序,它从本地读取一个名为 example.csv
的 CSV 文件,该文件包含两列数据:name
和 age
。程序将逐行读取 CSV 文件并将数据打印到控制台上。
package main
import (
"encoding/csv"
"fmt"
"os"
)
func main() {
// 打开 CSV 文件
file, err := os.Open("example.csv")
if err != nil {
panic(err)
}
defer file.Close()
// 创建 CSV reader
reader := csv.NewReader(file)
// 逐行读取 CSV 文件并处理数据
for {
record, err := reader.Read()
if err != nil {
break
}
fmt.Println("Name:", record[0])
fmt.Println("Age:", record[1])
}
}
在上面的示例中,我们首先使用 os.Open
函数打开了名为 example.csv
的 CSV 文件。然后,我们创建了一个 csv.Reader
对象,它将从打开的文件中读取数据。最后,我们使用 reader.Read()
函数逐行读取 CSV 文件并将每一行的数据存储在一个名为 record
的字符串数组中。我们可以通过 record[0]
和 record[1]
访问每一行的第一列和第二列数据,分别为 name
和 age
。
在读取 CSV 文件时,我们可以选择将数据解析为特定类型的值。以下是一个示例程序,它读取一个名为 example.csv
的 CSV 文件,并将每一行的 age
字段解析为整数类型。然后,程序将计算所有行的 age
字段的平均值,并将结果打印到控制台上。
package main
import (
"encoding/csv"
"fmt"
"os"
"strconv"
)
func main() {
// 打开 CSV 文件
file, err := os.Open("example.csv")
if err != nil {
panic(err)
}
defer file.Close()
// 创建 CSV reader
reader := csv.NewReader(file)
// 初始化计数器和总和
count := 0
sum := 0
// 逐行读取 CSV 文件并解析数据
for {
record, err := reader.Read()
if err != nil {
break
}
age, err := strconv.Atoi(record[1])
if err != nil {
continue
}
count++
sum += age
}
// 计算平均值并打印结果
if count > 0 {
average := float64(sum) / float64(count)
fmt.Printf("Average age: %.2f\n", average)
} else {
fmt.Println("No data")
}
}
在上面的示例中,我们首先使用 os.Open
函数打开了名为 example.csv
的 CSV 文件。然后,我们创建了一个 csv.Reader
对象,它将从打开的文件中读取数据。接下来,我们初始化了一个计数器和一个总和变量,用于计算所有行的 age
字段的平均值。在逐行读取 CSV 文件的过程中,我们首先使用 strconv.Atoi
函数将 age
字段转换为整数类型。然后,我们将计数器加一并将 age
字段的值添加到总和变量中。最后,我们通过将总和除以计数器的值来计算平均值,并将结果打印到控制台上。
在 Golang 中,读取 CSV 文件非常简单。使用内置的 encoding/csv
包,我们可以轻松地逐行读取 CSV 文件并处理数据。同时,我们还可以选择解析 CSV 数据并将其转换为特定类型的值。