java - opencsv 从未知行但已知单词读取?

标签 java csv opencsv

好的,我有一个 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 中。

我假设必须考虑所有剩余的行(考虑与另一个字符串匹配以阻止这种情况,如果情况并非如此),并且开始的行正是“详细信息”(您可以使用正则表达式作为更灵活的方法)

Here is a live demo

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

相关文章:

java - 从 Csv 文件读取数据

php - 需要将其中包含/逗号的字符串正确导出到 CSV 文件中

python - 如何在没有 next() 的情况下读取文件 csv?

javabeans - 如何解析 Opencsv HeaderColumnNameMappingStrategy 中的非字符串值

java - OpenCSV 无法读取 Jersey2 创建的 InputStream

java - 不明白为什么条件 "OR"运算符不适合我?

java - 客户端停止对服务器的消息使用react

groovy - 使用 opencsv 从 csv 文件中删除引号

java - 从编译器中提取源代码元数据

java - 如何在 Java 中解压缩目录中的所有 Zip 文件夹?