You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言中如何使用字符串分隔符写入CSV文件?

如何用字符串分隔符生成类CSV文件(Go语言)

Go标准库的encoding/csv包确实仅支持单个字符作为分隔符(csv.Writer.Comma是rune类型,对应单个Unicode字符),无法直接使用|-|这类字符串分隔符。要实现需求,你可以用以下两种方式:

1. 手动拼接并写入数据

直接自行处理每行字段的拼接、转义逻辑,然后写入文件。这种方式完全可控,不需要依赖第三方库。

示例代码

package main

import (
	"os"
	"strings"
)

func main() {
	// 创建输出文件
	outFile, err := os.Create("custom_sep.csv")
	if err != nil {
		panic(err)
	}
	defer outFile.Close()

	// 定义字符串分隔符
	sep := "|-|"
	// 模拟待写入的数据
	rows := [][]string{
		{"username", "email", "bio"},
		{"john_doe", "john@example.com", "喜欢爬山"},
		{"jane_smith", "jane@example.com", "我的签名里有|-|这个分隔符"},
	}

	for _, row := range rows {
		// 处理每个字段:如果字段包含分隔符、双引号或换行符,用双引号包裹并转义内部的双引号
		processedFields := make([]string, len(row))
		for idx, field := range row {
			if strings.Contains(field, sep) || strings.Contains(field, `"`) || strings.Contains(field, "\n") {
				// 转义字段内的双引号(替换为两个双引号)
				escaped := strings.ReplaceAll(field, `"`, `""`)
				processedFields[idx] = `"` + escaped + `"`
			} else {
				processedFields[idx] = field
			}
		}
		// 拼接成一行,加上换行符
		line := strings.Join(processedFields, sep) + "\n"
		// 写入文件
		if _, err := outFile.WriteString(line); err != nil {
			panic(err)
		}
	}
}

注意事项

  • 如果字段包含换行符、双引号或分隔符,必须按照类似CSV的规则转义,否则后续解析时会出错。
  • 上述代码实现了基础的转义逻辑,你可以根据实际需求调整(比如是否需要支持更多特殊字符)。

2. 使用支持字符串分隔符的第三方库

Go生态中有一些第三方CSV库支持多字符分隔符,你可以在Go Modules中搜索相关包(比如关键词csv multi-character delimiter),选择合适的库来替代标准库。


内容的提问来源于stack exchange,提问作者hbpeng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:14:53