CSV在 Go 中的写法:标准库用法与示例

34 0

CSV(逗号分隔值)是用纯文本保存表格数据的格式:每行一条记录,字段之间用逗号分隔。下面重点说明标准库用法与示例。

CSV在 Go 中的写法

下面是 Go 中处理CSV的常用写法:

r := csv.NewReader(file)
records, err := r.ReadAll()
w := csv.NewWriter(os.Stdout)
w.Write([]string{"名称", `他说"好"`})
w.Flush()

运行前确认输入的字符集(推荐 UTF-8),并用几组已知样例核对结果。

示例

输入:key;value | 前后空格 ;x

写成 CSV结果:

key,value
 前后空格 ,x

说明:按 RFC 4180:含逗号、引号、换行的字段用双引号包裹,内部引号写成两个。

工作原理

解析器逐字符读取:遇到逗号结束一个字段,遇到换行结束一条记录;如果字段以双引号开头,就一直读到配对的结束引号为止,其中的逗号和换行都属于字段内容,"" 还原为一个 "。

规则说明

  • RFC 4180 规定行尾用 CRLF,但大多数程序也接受 LF
  • 每行字段数应相同
  • 字段前后的空格属于内容的一部分
  • 是否有表头需要双方约定

常见问题

【字段里有逗号怎么办?】用双引号把整个字段包起来。

【为什么 000123 变成了 123?】Excel 自动当作数字处理,导入时把该列设为“文本”。

【CSV 和 TSV 有什么区别?】TSV 用制表符分隔,字段里很少出现制表符,解析更简单。

处理含个人信息的数据时,请注意保护隐私。

署名:123问编辑部 · 最近修订:2026-11-11 · 已按编辑与审核说明检查;内容仅供参考,不构成医疗、法律或投资建议。发现错误可查看纠错方式。

标签: 文本处理

抱歉,评论功能暂时关闭!