📌  相关文章
📜  golang 读取 csv 文件 - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:31:02.159000             🧑  作者: Mango

Golang 读取 CSV 文件

在 Golang 中,读取 CSV 文件可以使用内置的 encoding/csv 包。本文将介绍如何使用 Golang 读取 CSV 文件。

读取 CSV 文件

以下是一个简单的示例程序,它从本地读取一个名为 example.csv 的 CSV 文件,该文件包含两列数据:nameage。程序将逐行读取 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] 访问每一行的第一列和第二列数据,分别为 nameage

解析 CSV 数据

在读取 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 数据并将其转换为特定类型的值。