在 Go (Golang) 中处理 CSV:解析与写入完全指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 Go (Golang) 中处理 CSV:解析、写入与数据处理

CSV(逗号分隔值)是交换表格数据最常用的格式之一。在 Go (Golang) 中,通过标准包 encoding/csv 原生实现了 CSV 处理,使其成为一个方便且高效的工具。在本文中,我们将详细讲解如何在 Go 中读取、创建和处理 CSV 文件,包括处理大量数据、配置分隔符以及错误处理。



encoding/csv 包:基础

encoding/csv 包提供了两个主要类型:用于读取 CSV 的 Reader 和用于写入的 Writer。它支持标准的 CSV 规则(RFC 4180),并允许灵活配置参数,例如分隔符、注释和引号处理。

要开始使用,只需导入该包:

import "encoding/csv"


读取 CSV 文件

让我们看一个逐行读取 CSV 文件的最简单示例:

package main

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

func main() { // 打开文件 file, err := os.Open("data.csv") if err != nil { panic(err) } defer file.Close()

// 创建 Reader reader := csv.NewReader(file)

// 读取所有记录 records, err := reader.ReadAll() if err != nil { panic(err) }

// 输出数据 for i, record := range records { fmt.Printf("行 %d: %v", i, record) }}

重要提示: ReadAll() 会将整个文件加载到内存中。对于大文件,请使用 Read() 进行逐行读取。



逐行读取大型 CSV 文件

为了处理大量数据(GB 级别),请使用迭代读取:

reader := csv.NewReader(file)for {    record, err := reader.Read()    if err != nil {        // 文件结束        if err.Error() == "EOF" {            break        }        panic(err)    }    // 处理记录    fmt.Println(record)}


写入 CSV 文件

创建 CSV 文件同样直观:

package main

import ( "encoding/csv" "os")

func main() { file, err := os.Create("output.csv") if err != nil { panic(err) } defer file.Close()

writer := csv.NewWriter(file) defer writer.Flush() // 重要:刷新缓冲区

// 写入标题行 writer.Write([]string{"Name", "Age", "City"}) // 写入数据 writer.Write([]string{"Alice", "30", "Moscow"}) writer.Write([]string{"Bob", "25", "Saint Petersburg"})}

不要忘记在所有写入操作后调用 Flush(),否则数据可能会丢失。



配置分隔符和其他参数

默认使用逗号,但您可以更改分隔符,例如改为分号(TSV 使用制表符):

reader := csv.NewReader(file)reader.Comma = ';'  // 对于 TSV:'\\t'

// 对于写入:writer := csv.NewWriter(file)writer.Comma = ';'

其他有用的参数:

  • LazyQuotes — 允许在非标准位置使用引号(默认为 false)
  • FieldsPerRecord — 检查字段数量(负值禁用检查)
  • Comment — 注释字符(例如 '#'),以该字符开头的行将被跳过
  • TrimLeadingSpace — 自动删除字段开头的空格

带配置的示例:

reader := csv.NewReader(file)reader.Comma = '\\t'reader.Comment = '#'reader.TrimLeadingSpace = true


错误处理与验证

CSV 文件通常包含错误:多余的引号、字段数量不匹配等。

推荐