当前位置: 首页 > 知识库问答 >
问题:

用java解析分割的csv文件

尉迟哲瀚
2023-03-14

我有一个带有注释的csv文件,其值需要在两个ArrayList之间拆分。例如:

% the values below here should go
% into ArrayList<Integer> list1
3,4,5,2,2,3
5,6,3,2,4,5
3,2,3,4,5,6
2,3,4,5,1,3
% the values below here should go
% into ArrayList<Integer> list2
4,6,3,4,5,3
3,4,5,6,3,2
4,5,6,4,3,2

实现这一目标的最佳方式是什么?我是否应该使用一个计数器,每次状态从%变到某个值时递增,反之亦然,然后如果计数器% 2 = 0,那么添加一个新的ArrayList并开始写入它?这是我能想到的唯一办法,但似乎有点笨拙,还有人有更好的主意吗?

编辑:我已经写了实际解析csv值的代码,我不需要帮助,只是想知道如何将值分成两个列表..

共有1个答案

许自强
2023-03-14

你的建议对我来说听起来不错。如果文件格式真的如此可预测,在我看来,任何更复杂的方法都可能是多余的。

但如果您想看到不同的方法,这是我的想法:每一行不以%开头的行都是我们想要解析为ArrayList的内容。因此,每当您遇到不是注释的行时,您就开始将以下行解析为ArrayList,直到您点击另一个注释或文件的末尾。这两个选项都标记了您要存储在单个ArrayList中的部分的末尾。所以,类似这样的事情:

ArrayList<ArrayList<Integer>> arrays = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> currentArray;
while(inputStream.hasNextLine()) {
    String line = inputStream.getLine();
    if(!lineIsComment(line)) {
        // This means that we are in a number block. We store the numbers
        // either in an existing list or create a new one if necessary
        if(currentArray == null) {
            currentArray = new ArrayList<Integer>();
        }
        addToList(line, currentArray);
    } else if(currentArray != null) {
        // In this case a comment block starts and currentArray contains
        // the numbers of the last number block.
        arrays.add(currentArray);
        currentArray = null;
    }
}
if(currentArray != null) arrays.add(currentArray);

其中< code > line is comment(String line)返回一个布尔值,该值指示给定行是否是注释,而< code>addToList(String line,ArrayList

 类似资料:
  • 问题内容: 我目前有一个CSV文件,在Excel中打开时,总共有5个柱。只有A列和C列对我和中的数据有意义 其余的列不相关。从第8行开始,然后以7的倍数工作(即第8、15、22行, 29,36等等),我正在寻找用Python2.7和来自这些字段的信息。A列中的数据将是键(6位数字 整数),C列中的数据是键的相应值。我已经试图在下面突出显示此内容,但格式不正确最佳: 如上所述,我希望从A7(DDEF

  • 本文向大家介绍java实现CSV 字段分割,包括了java实现CSV 字段分割的使用技巧和注意事项,需要的朋友参考一下 支持引号嵌套,逗号分割 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 我有一个CSV文件,我想用开放CSV的csv阅读器在Java中解析。 为此,我创建了一个Bean对象,信息映射到该对象。我的有点长,所以这是我从教程中得到的一个例子: 我用来解析CSV文件并将信息映射到bean的代码类似于以下代码: 问题在于,我的CSV不仅包含原始数据,还包含列标题和其他数据。对于专栏标题,我只从某行读取我的文件,解决了这个问题: (1 是开始读取的行) 其他数据主要是文件末尾(

  • 问题内容: 使用nodejs,我想解析一个包含10000条记录的.csv文件,并对每一行进行一些操作。我尝试使用http://www.adaltas.com/projects/node- csv 。我无法让它在每一行暂停。这只会读取所有10000条记录。我需要执行以下操作: 逐行读取csv 在每条线上执行耗时的操作 转到下一行 有人可以在这里提出其他建议吗? 问题答案: 好像您需要使用一些基于流的

  • 使用nodejs,我想解析一个包含10000条记录的.csv文件,并对每一行执行一些操作。我尝试使用http://www.adaltas.com/projects/node-csv。我不能让它每排都停下来。这只是读取所有的10000个记录。我需要做到以下几点: 逐行读取csv 对每行执行耗时操作 转到下一行