【问题标题】:How to properly parse CSV file to 2d Array?如何将 CSV 文件正确解析为二维数组?
【发布时间】:2010-09-01 13:26:17
【问题描述】:

我正在尝试将 csv 文件解析为二维数组,其中每一行是一个数据条目,每一列是该条目中的一个字段。

一次性完成这一切可以简化我的处理代码并将其与解析代码分开。

我尝试编写一个简单的解析器,它使用String.Split 以逗号分隔文件。这是我发现的一种可怕的方法。它完全无法解析任何特殊情况,如双引号、换行符和其他特殊字符。

如前所述,将 CSV 文件解析为二维数组的正确方法是什么?

Java 中的代码示例将不胜感激。 该数组可以是动态列表对象或向量或类似的东西,它只需要可以使用两个索引器进行索引。

【问题讨论】:

    标签: java parsing csv


    【解决方案1】:

    看看Commons CSV

    CSVParser parser = new CSVParser(new FileReader(file));
    String[] line;
    while ((line = parser.getLine()) != null) {
         // process
    }
    

    【讨论】:

      【解决方案2】:

      如果您的文件包含带有双引号条目的字段,其中包含分隔符和带有换行符的字段,那么我怀疑它是一个真正的 csv 文件......一个合适的 csv 文件是这样的

      1;John;Doe;engineer,manager
      2;Bart;Foo;engineer,dilbert
      

      虽然这是“别的东西”:

      1;John;Doe;"engineer;manager"
      2;Bart;Foo;
         "engineer,dilbert"
      

      第一个示例可以在每一行使用String.split 进行解析。

      【讨论】:

      猜你喜欢
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 2014-10-19
      相关资源
      最近更新 更多