我正在使用一个简单的程序来读取CSV文件,我注意到当我使用EXCEL创建CSV或基于Windows的计算机时,go库无法读取它。即使我使用cat命令它只显示终端上的最后一行。它总是会导致此错误extraneous " in field
。
我研究得比我发现它与OS之间的回车差异有些相关。
但我真的想问一下如何制作一个通用的csv阅读器。我尝试使用pandas
读取相同的csv并且它已成功读取。但是我无法使用我的Go代码实现这一目标。
此外还有正确csv的屏幕截图
答案 0 :(得分:1)
您的文件清楚地表明您在内容的末尾有额外的报价。虽然像pandas
这样的程序可能没问题,但我认为它无效csv
所以go会返回错误。
您的数据出现问题的快速示例:https://play.golang.org/p/KBikSc1nzD
更新:在你的更新和一点点搜索之后,我必须大肆宣传,回车确实很重要,似乎是这里的主要罪魁祸首,Go似乎可以正常处理{{ 1}} windows变体但不是\r\n
。在这种情况下,您可以执行的操作是将\r
包装到自定义读取器中,该读取器将bytes.Reader
字节替换为\r
字节。
以下是一个示例:https://play.golang.org/p/vNjzwAHmtg
请注意,这个例子只是一个例子,它没有处理\n
可能是合法字节的所有可能情况。