csv - 在 Go 中编写制表符分隔值

标签 csv go file-writing

我正在尝试使用 tabwriter 在文件中写入制表符分隔值Go 中的包。

records map[string] []string
file, err := os.OpenFile(some_file,  os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
    log.Println(err)
}
w := new(tabwriter.Writer)
w.Init(file, 0, 4, 0, '\t', 0)
for _, v := range records {
    fmt.Fprintln(w, v[0],"\t",v[1],"\t",v[2],"\t",v[3])
    w.Flush()
}

我面临的问题是写入文件的记录前面有两个额外的空格。我添加了调试标志,这是我在文件中得到的:

fname1  | mname1  | lname1      | age1
fname2  | mname2  | lname2      | age2

我看不出哪里出错了。感谢您的帮助。

最佳答案

正如 SirDarius 所建议的那样,encoding/csv 确实是正确的选择。您所要做的就是将 Comma 设置为水平制表符,而不是默认值,默认值就是逗号。

package tabulatorseparatedvalues

import (
    "encoding/csv"
    "io"
)

func NewWriter(w io.Writer) (writer *csv.Writer) {
    writer = csv.NewWriter(w)
    writer.Comma = '\t'

    return
}

关于csv - 在 Go 中编写制表符分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35778958/

相关文章:

c++ - 如何将C++写入速度加速到CrystalDiskMark测试的速度?

python - 在 Python 中写入具有 sudo 权限的文件

php - 将 6 个查询合并为 1 个结果集以进行导出?

python - 使用循环从 CSV 获取数据数组

go - 在GoBuster中找不到单词表

go - 如何复制公共(public)变量使用去?

java - 在文本文件中查找一行并编辑它

ruby-on-rails - Rails 事件管理 : How to add a CSV uploader action on dashboard page

csv - 经典的 asp - 读取包含字母数字数据的 csv 文件

go - 在 Go 中按时获取 "hour out of range".Parse(layout, value)