【问题标题】:How to extract data from CSV files in java [duplicate]如何从Java中的CSV文件中提取数据[重复]
【发布时间】:2017-12-01 20:59:26
【问题描述】:

我的任务是用 java 实现 K 最近邻。为此,请使用 2 个 csv 文件。一种是培训,一种是测试,它们包含人口普查中关于人们收入多少的数据。

一些文件的一个例子是(这正是它在文件中的样子):

meta data: age, workclass, fnlwgt, education, education-num, marital-status, occupation, relationship, race, sex, capital-gain, capital-loss, hours-per-week, native-country, earns

example 1: 25, Private, 226802, 11th, 7, Never-married, Machine-op-inspct, Own-child, Black, Male, 0, 0, 40, United-States, <=50K

example 2: 38, Private, 89814, HS-grad, 9, Married-civ-spouse, Farming-fishing, Husband, White, Male, 0, 0, 50, United-States, <=50K

我只是不明白如何使用扫描仪和文件阅读器从这些文件中获取关键信息,例如,如果我只想要每个人在 simplist 工作的时间。

如果您对如何使用 knn 实现这一点有一个基本的概述,那么您也会很高兴......

很抱歉违反任何规则或不完全了解如何提前提问。

【问题讨论】:

  • 可能重复:见answer1answer2
  • 不要自己解析 CSV,使用库来解析它。副本提到了 Apache Commons CSV。另一个是 opencsv。

标签: java eclipse knn


【解决方案1】:

您可以将 FileReader 包装在 BufferedReader 中,然后逐行读取并使用 split(",") 或 Scanner 进行标记。也许是这样的?

public void readCsv() throws IOException {
    File file = new File("filename.csv");
    FileReader fileReader = new FileReader(file);
    BufferedReader bufferedReader = new BufferedReader(fileReader);
    String line;
    String[] tokenizedLine;

    while ((line = bufferedReader.readLine()) != null) {
        tokenizedLine = parse(line);
        // do stuff with your array
    }
}

private String[] parse(String line) { // use split or Scanner
    return line.split(",");
}

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 2011-02-17
    • 2018-06-23
    • 1970-01-01
    • 2018-05-20
    • 2022-06-11
    • 1970-01-01
    • 2014-07-11
    相关资源
    最近更新 更多