Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java在多行上使用标题的CSV解析器_Java_Csv - Fatal编程技术网

使用Java在多行上使用标题的CSV解析器

使用Java在多行上使用标题的CSV解析器,java,csv,Java,Csv,是否有Java库允许我解析在多行上定义了头的CSV文件?以下是此类CSV的一个示例: $ID$,$Customer$ Cust1, Jack Cust2 , Rose Sherlock,London Clouseau,Paris $Name$,$Location$ Cust1, Jack Cust2 , Rose Sherlock,London Clouseau,Paris “$”符号表示该行中存在标题,后续行中的值映射到这些标题。不确定您的特定用例,但您可以简单地读取所有行,并

是否有Java库允许我解析在多行上定义了头的CSV文件?以下是此类CSV的一个示例:

$ID$,$Customer$

Cust1, Jack

Cust2 , Rose
Sherlock,London

Clouseau,Paris
$Name$,$Location$

Cust1, Jack

Cust2 , Rose
Sherlock,London

Clouseau,Paris

“$”符号表示该行中存在标题,后续行中的值映射到这些标题。

不确定您的特定用例,但您可以简单地读取所有行,并在标题行出现时进行检查

允许您轻松处理此问题

CsvParserSettings settings = new CsvParserSettings();
CsvParser parser = new CsvParser(settings);
List<String[]> allRows = parser.parseAll(new FileReader(new File("/path/to/your.csv")));
for(String[] row : allRows){
     if(isHeaderRow(row)){ // isHeaderRow() would test whether each element is enclosed within $
          // do stuff to "switch" to a new header row.
     } else {
          // do stuff
     }
}
CsvParserSettings设置=新的CsvParserSettings();
CsvParser parser=新的CsvParser(设置);
List allRows=parser.parseAll(新文件阅读器(新文件(“/path/to/your.csv”));
for(字符串[]行:所有行){
if(isHeaderRow(row)){//isHeaderRow()将测试每个元素是否包含在$
//执行“切换”到新标题行的操作。
}否则{
//做事
}
}

披露:我是这个图书馆的作者。它是开源和免费的(Apache V2.0许可证)。

您可以使用您想要的任何类型的dimill解析fichier csv

大多数csv解析器将只解析行。您可以将第一行解释为标题。或者不是。因此,您也可以识别第二个标题。获得了1Gb csv文件,其中包含未替换的引号和多行值。非常感谢@jeronimo Backs的支持。内存占用小,设置灵活,支持友好。