使用Java在多行上使用标题的CSV解析器
是否有Java库允许我解析在多行上定义了头的CSV文件?以下是此类CSV的一个示例: $ID$,$Customer$使用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 “$”符号表示该行中存在标题,后续行中的值映射到这些标题。不确定您的特定用例,但您可以简单地读取所有行,并
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的支持。内存占用小,设置灵活,支持友好。