csv - 使用 ISO-8859-1 编码在 golang 中解析 CSV

标签 csv go

我有一个 csv 文件,其中有一行标题,然后是几十行。当我尝试将其作为 csv 读取时,它会作为 1 个大 slice 返回。为什么它不作为单独的行返回? 输入看起来像:

COL1,COL2
val1,val2
val1,val2
val1,val2

object.Body 是一个 ReadCloser

lines, err := csv.NewReader(object.Body).ReadAll()
if err != nil {
    log.Fatal(err)
}

for _, line := range lines {
    log.Print(line)
}

输出返回为

[COL1 COL2
val1,val2
val1,val2
val1,val2]

我期望的返回是:

[
  [val1, val2],
  [val1, val2],
  [val1, val2],
]

有什么想法吗?完全被这个难住了。

编辑 我不小心忘了在标题中添加逗号。这只是在示例代码中,而不是实际问题。对困惑感到抱歉。

编辑 我认为这个问题是由于 csv 文件的编码不同造成的。

最佳答案

我认为您提供的示例中的第一行格式不正确。不应该是 COL1,COL2 吗?

我认为下面的代码可以满足您的需求:

package main

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

func main() {
    data := bytes.NewBufferString(`COL1,COL2
val1,val2
val1,val2
val1,val2`)

    reader := csv.NewReader(data)
    reader.Read() // Skip header
    lines, err := reader.ReadAll()

    if err != nil {
        panic(err)
    }

    fmt.Println(lines)
}

关于csv - 使用 ISO-8859-1 编码在 golang 中解析 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53245917/

相关文章:

r - 使用 R 从 csv 文件中的行绘制图表

javascript - Highcharts csv 数据加载

python - read_csv 将 .1 附加到列名

go - io.Pipe使用困难

http - 使用 "+="缓慢构建长字符串

linux - 如何在 Linux 命令行上解析 CSV 文件?

php - 将包含json的excel单元格转换成csv

go - 使用 go 模块将 retool 替换为 tools.go 用于多开发人员和 CI 环境

go - 使用 Golang 的自调用函数

c - 为什么 dlsym 在 cgo 中产生的结果与在 c 中产生的结果不同?