示例csv数据:
1,"Robert,Adams,Washington,US
2,"Madhu",Grant,Oregon,US
3,Mohan,Young,Texas,US
第一个条目包括两列1 RobertAdamsWashingtonUS
其余两个打印正确,在第一个条目应用程序中搜索关闭双引号,其余所有列都被视为一列
并显示封装令牌和分隔符之间的错误无效字符。应该正确阅读这个csv的方法是什么? (JAVA)
答案 0 :(得分:1)
正确读取此csv的方法应该是什么。
正确的做法是拒绝它。这是畸形的。
如果我们不允许引号中的行分隔符,则第1行的字段以双引号开头但没有结束双引号。
如果我们允许在引号内使用行分隔符,则第一行继续到第二行,但2,"
之后的字符是非法的。
(由您决定引号内的行分隔符是否对您的应用程序有意义。)
我不建议您尝试将此数据视为" good"。这显然是不正确的,接受错误的数据是正确的。
如果您要尝试继续解析,则应跳过第1行或第1行和第2行。
你添加了这个:
[CSV文件]非常大,我必须检查每一行
程序应该进行检查,而不是你。如果编码正确,程序在完成平凡的重复性任务时会更加可靠。
您可以通过在错误消息中包含行号来简化(手动)更正CSV中的错误。但更好的方法是以不允许错误进入的方式创建CSV文件。
如何以编程方式执行此操作?
使用现有的Java CSV阅读器库。有很多可供选择。