csv - go - 如何修复golang中CSV文件中缺少逗号的“错误数量的字段”?
问题描述
对于我的 CSV 文件,每一行都有相同的列数,但对于最后一行,那只有一列,所以当我用“foreach”读取文件数据以获得总行数时,我遇到了错误字段数,如何在不删除最后一行的情况下修复此错误?此处的代码和 CSV 文件:
openfile, err := os.Open(filepath)
checkError("Error in reading the file\n", err)
fmt.Println("Already open filepath :", filepath)
//read the data of file
filedata, err := csv.NewReader(openfile).ReadAll()
checkError("Error in reading the file\n", err)
leg := len(filedata)
fmt.Println("total no of rows:", leg)
close := make([]string, leg)
date := make([]string, leg)
open := make([]string, leg)
high := make([]string, leg)
low := make([]string, leg)
adjustclose := make([]string, leg)
volume := make([]string, leg)
for e, value := range filedata {
date[e] = value[0]
open[e] = value[1]
high[e] = value[2]
low[e] = value[3]
close[e] = value[4]
adjustclose[e] = value[5]
volume[e] = value[6]
}
2020-03-24,21,21,21,21,21,5
2020-04-06,20.8,20.8,20.8,20.8,20.8,19
2020-04-07,20.4,20.4,20.4,20.4,20.4,5
2020-04-09,20.4,20.4,20.4,20.4,20.4,10
292
解决方案
通过将FieldsPerRecord设置为负值来禁用 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
}
...
}
推荐阅读
- c# - ASP.NET 页面 CSS 样式在 Visual Studio 中加载,但在浏览器中不加载
- laravel - Laravel - 如何添加全局信息,如 \Auth::user()
- php - 动态 mysql -> excel 导出
- javascript - Puppeteer PDF 从云端生成空白页,与邮递员一起工作。有什么想法吗?
- algorithm - 什么是近乎完全的二叉树?
- cloud-foundry - 关键云代工是否支持 Windows 7 32 位?
- android - 从另一个片段中的目录更新片段中的列表视图元素
- r - 如何在频率图的 y 轴上显示刻度?
- java - 使用 RestTemplate 调用外部 REST 端点时出错
- fasttext - 在命令行中运行 FastText 自动调整错误