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中,通过特定列的标题解析该列_Java_Parsing_Csv_Header - Fatal编程技术网

在Java中,通过特定列的标题解析该列

在Java中,通过特定列的标题解析该列,java,parsing,csv,header,Java,Parsing,Csv,Header,这是我的CSV文件的外观: X, X2, Symbol, Date, Open, High, Low, Close, Volume 5, 9, AAPL, 01-Jan-2015, 110.38, 110.38, 110.38, 110.38, 0 2710, 289, AAPL, 01-Jan-2015, 110.38, 110.38, 110.38, 110.38, 0 5415, 6500, AAPL, 02-Jan-2015, 111.39, 111.44, 107.35,

这是我的CSV文件的外观:

 X, X2, Symbol, Date, Open, High, Low, Close, Volume

 5, 9, AAPL, 01-Jan-2015, 110.38, 110.38, 110.38, 110.38, 0
 2710, 289,  AAPL, 01-Jan-2015, 110.38, 110.38, 110.38, 110.38, 0
 5415, 6500, AAPL, 02-Jan-2015, 111.39, 111.44, 107.35, 109.33, 53204600
如何仅从X和X2列中选择值?我一直在尝试使用openCSV库,但没有得到什么好结果


谢谢

您可以使用相同的openCSV库功能:CsvToBean。 您可以创建一个属性与列名相同的bean类,然后使用这个CSVtoBean解析bean列表,如下所示

来自openCSV的示例:

ColumnPositionMappingStrategy strat = new ColumnPositionMappingStrategy();
strat.setType(YourOrderBean.class);
String[] columns = new String[] {"name", "orderNumber", "id"}; // the fields to bind do in your JavaBean
strat.setColumnMapping(columns);

CsvToBean csv = new CsvToBean();
List list = csv.parse(strat, yourReader);
@src:
,可以在/test/java/com/opencsv/bean/目录下查看每个可用映射策略的测试用例。

您可以使用相同的opencsv库功能:CsvToBean。 您可以创建一个属性与列名相同的bean类,然后使用这个CSVtoBean解析bean列表,如下所示

来自openCSV的示例:

ColumnPositionMappingStrategy strat = new ColumnPositionMappingStrategy();
strat.setType(YourOrderBean.class);
String[] columns = new String[] {"name", "orderNumber", "id"}; // the fields to bind do in your JavaBean
strat.setColumnMapping(columns);

CsvToBean csv = new CsvToBean();
List list = csv.parse(strat, yourReader);
@src: ,可以在/test/java/com/opencsv/bean/目录下查看每个可用映射策略的测试用例。

可以非常轻松地完成此操作,并且比opencsv快2倍

以下是如何使用它来选择感兴趣的列:

输入 配置 作语法分析 输出 在字段选择上,您可以使用任何字段序列,并且具有不同列大小的行,解析器可以很好地处理这一点

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

可以很容易地做到这一点,并且比OpenCSV快2倍

以下是如何使用它来选择感兴趣的列:

输入 配置 作语法分析 输出 在字段选择上,您可以使用任何字段序列,并且具有不同列大小的行,解析器可以很好地处理这一点

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

    CsvParserSettings settings = new CsvParserSettings(); //many options here, check the tutorial
    settings.setHeaderExtractionEnabled(true); //tells the parser to use the first row as the header row
    settings.selectFields("X", "X2"); //selects the fields 
    CsvParser parser = new CsvParser(settings);
    List<String[]> allRows = parser.parseAll(new StringReader(input));
    for(String[] row : allRows){
        System.out.println(Arrays.toString(row));
    }
}
[5, 9]
[2710, 289]
[5415, 6500]