好的,我有一个 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 库。
我需要从“Detail”行读取,但我不知道它是哪一行,因为它之前可能有未定义的行数。总结从
开始
第 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());
它基本上读取文件,直到找到与详细信息部分匹配的行,然后将所有剩余的行添加到字符串中。使用该字符串的读取器可以将其输入到 CSVReader 中。
我假设必须考虑所有剩余的行(考虑与另一个字符串匹配以阻止这种情况,如果情况并非如此),并且开始的行正是“详细信息”(您可以使用正则表达式作为更灵活的方法)
关于java - opencsv 从未知行但已知单词读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51514390/