我有一个 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/