我该如何解决这个问题;“字段数错误”;在golang的CSV文件中缺少逗号?

我该如何解决这个问题;“字段数错误”;在golang的CSV文件中缺少逗号?,csv,go,foreach,Csv,Go,Foreach,对于我的CSV文件,每一行都有相同的列数,但对于最后一行,这只是一列,因此当我使用“foreach”读取文件数据以获取总行数时,遇到错误,即字段数错误,如何在不删除最后一行的情况下修复此错误?此处的代码和CSv文件: 2020-03-24,21,21,21,21,5 2020-04-06,20.8,20.8,20.8,20.8,20.8,20.8,19 2020-04-07,20.4,20.4,20.4,20.4,20.4,20.4,5 2020-04-09,20.4,20.4,20.4,20

对于我的CSV文件,每一行都有相同的列数,但对于最后一行,这只是一列,因此当我使用“foreach”读取文件数据以获取总行数时,遇到错误,即字段数错误,如何在不删除最后一行的情况下修复此错误?此处的代码和CSv文件:


2020-03-24,21,21,21,21,5

2020-04-06,20.8,20.8,20.8,20.8,20.8,20.8,19

2020-04-07,20.4,20.4,20.4,20.4,20.4,20.4,5

2020-04-09,20.4,20.4,20.4,20.4,20.4,20.4,10


292通过设置为负值,禁用CSV读取器中的记录长度测试

csvr := csv.NewReader(openfile)
csvr.FieldsPerRecord = -1
filedata, err := csvr.ReadAll()
测试应用程序代码中的记录长度:

for e, value := range filedata {
    if len(value) < 7 {
        continue  // skip short records
    }
    ...
}
对于e,值:=范围文件数据{
如果len(值)<7{
继续//跳过短记录
}
...
}

.

通过设置为负值禁用CSV读取器中的记录长度测试

csvr := csv.NewReader(openfile)
csvr.FieldsPerRecord = -1
filedata, err := csvr.ReadAll()
测试应用程序代码中的记录长度:

for e, value := range filedata {
    if len(value) < 7 {
        continue  // skip short records
    }
    ...
}
对于e,值:=范围文件数据{
如果len(值)<7{
继续//跳过短记录
}
...
}

.

请参见
go doc encoding/csv.Reader.FieldsPerRecord
。所有方式,字面上所有方式阅读您使用的任何软件包的完整文档。如果您阅读了文档,但能够理解它:使用-1。请参见
go doc encoding/csv.Reader.FieldsPerRecord
。所有方式,字面上所有方式阅读您使用的任何软件包的完整文档。如果您阅读了文档,但能够理解它:使用-1。哦,好的,谢谢,这是工作,但是如何将所有数据存储到数组中?我必须创建一个切片或数组,对吗?但是如果没有文件数据的长度,我该怎么做呢?@user12952781在执行时将值附加到切片中。答案中链接的示例演示了如何执行此操作。哦,好的,谢谢,这是可行的,但如何将所有数据存储到数组中?我必须创建一个切片或数组,对吗?但是如果没有文件数据的长度,我该怎么做呢?@user12952781在执行时将值附加到切片中。答案中链接的示例说明了如何做到这一点。