好的,我有一个csv文件:

Summary
    heading1,heading2,heading3
    value1,value2,value2
    value1,value2,value2
    value1,value2,value2
    value1,value2,value2
Detail
    heading11,heading12,heading13
    value1,value2,value2
    value1,value2,value2
    value1,value2,value2
    value1,value2,value2


我正在使用com.opencsv.CSVReader库。

我需要从“详细信息”行中读取内容,但是我不知道它是哪一行,因为在它之前可能存在未定义的行数。摘要始于
第13行,但我知道该如何处理。

opencsv是否有一种简单的模式来查找“详细信息”行并从此处开始?
还是我需要以某种方式计数Detail之前的行,并将其作为参数传递给OPENCSV?

最佳答案

由于将CSV分为几部分不是普遍的要求,并且库不一定支持,因此您应该找到感兴趣的行开始并提取它们的地方。一种方法是:

BufferedReader b = new BufferedReader(new FileReader(source));
String line = b.readLine();
StringBuilder build = new StringBuilder();
while(line != null && !line.equals("Detail")){
    line = b.readLine();
}
line = b.readLine();
while(line != null){
    build.append(line);
    build.append('\n');
    line = b.readLine();
}
System.out.println(build.toString());
Reader toBeParsed = new StringReader(build.toString());


它基本上会读取文件,直到找到与Detail部分匹配的行,然后将所有剩余的行添加到String中。通过该字符串,可以使用阅读器,该阅读器可以输入到CSVReader中。

我假设必须考虑所有剩余的行(如果不是这种情况,请考虑与另一个字符串匹配以停止该行),并且开始的行正好是“ Detail”(可以使用正则表达式以获得更灵活的方法) )

Here is a live demo

关于java - opencsv从未知行中读取但已知单词?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51514390/

10-13 04:26