Java Csv数据读取问题

Java Csv数据读取问题,java,csv,parsing,apache-spark,Java,Csv,Parsing,Apache Spark,csv数据示例: 1,"Robert,Adams,Washington,US 2,"Madhu",Grant,Oregon,US 3,Mohan,Young,Texas,US 第一个条目由两列组成1 RobertAdamsWashingtonUS 其余两列打印正确,在第一个条目应用程序中搜索双引号,其余所有列被视为一列 并显示封装标记和分隔符之间的错误无效字符。正确阅读此csv的方法应该是什么?爪哇 正确阅读此csv的方法应该是什么 正确的方法是拒绝它。它是畸形的 如果我们不允许在引号中使用行

csv数据示例:

1,"Robert,Adams,Washington,US
2,"Madhu",Grant,Oregon,US
3,Mohan,Young,Texas,US
第一个条目由两列组成1 RobertAdamsWashingtonUS

其余两列打印正确,在第一个条目应用程序中搜索双引号,其余所有列被视为一列

并显示封装标记和分隔符之间的错误无效字符。正确阅读此csv的方法应该是什么?爪哇

正确阅读此csv的方法应该是什么

正确的方法是拒绝它。它是畸形的

如果我们不允许在引号中使用行分隔符,那么第1行有一个字段,该字段以双引号开头,但没有结束双引号

如果我们允许在引号内使用行分隔符,那么第一行继续到第二行,但是2后面的字符是非法的

由您决定引号中的行分隔符是否适用于您的应用程序

我不建议您尝试将此数据视为好数据。这显然是不正确的,接受错误数据作为正确数据是危险的

如果要继续解析,应跳过第1行或第1行和第2行

您添加了以下内容:

[CSV文件]非常大,我必须检查每一行

程序应该做检查,而不是你。程序在做平凡的重复性任务时更可靠。。。如果编码正确

通过在错误消息中包含行号,可以简化CSV中错误的手动更正。但更好的方法是以一种不允许出现错误的方式创建CSV文件

如何按程序进行


使用现有的Java CSV读取器库。有很多可供选择。

嗯。。。拉屎=>拉屎。更正CSV文件!是的,这是最后一个选择。因为数据非常大,我必须检查每一行,所以,你到底在问什么?如何以编程方式更正CSV文件?这是一件非常复杂的事情,因此过于宽泛。在这样一个文本文件中有很多东西可能出错。是的,我知道它太宽了。但是如果他们的解决方案是肯定的,那么如何编程呢?我试过了,但是没有。跳过错误的行并继续解析。但是,当您结束时,请拒绝整个文件并打印所有错误/行号的列表,以便在批处理中更正。事实上,更好的解决方案是在运行Java程序之前验证CSV。OP显示的数据看起来确实格式不正确,除非。。字段不带引号,即引号是字段数据的一部分,也是有效的csv选项。当然,没有字段可以包含逗号。但在这种情况下,csv很可能只是格式不正确。