在java中解析csv文件时出现在各行中的单词

时间:2016-11-16 23:53:26

标签: java csv parsing text-parsing

我正在尝试解析java中的csv文件并遇到问题。当我尝试像这样分割csv时:

public static void main(String[] args) {
    String nameOfFile = "KingstonNorthWard2016Distribution.csv";
    File file = new File(nameOfFile);
    try {
        Scanner inputStream = new Scanner(file);
            while (inputStream.hasNext()){
            String data = inputStream.next();
            String[] values = data.split(",");
            System.out.println(Arrays.toString(values));
        }
        inputStream.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

}

我的控制台会返回:

[Distribution]
[Report]
[]
[Print]
[Date/Time:]
[31/10/2016]
[07:27:10PM]
[Bayside]
[City]
[Council]
[2016]

尽管我的csv看起来像这样:

Distribution Report                               ,,,,,,,,,,,,,,,,,,,,,,,,,,
Print Date/Time: 31/10/2016 07:27:10PM,,,,,,,,,,,,,,,,,,,,,,,,,,
Bayside City Council 2016,,,,,,,,,,,,,,,,,,,,,,,,,,
Central Ward,,,,,,,,,,,,,,,,,,,,,,,,,,

我无法理解的是为什么我的控制台看起来不像这样:

[Distribution report]
[Print Date/Time: 31/10/2016 07:27:10PM]
[Bayside City Council 2016]
[Central Ward]

如果有人能帮助那么好的话。对于额外的积分,csv后来继续列出名称,如" Smith,John"所以请记住,如果我的分裂需要改变。提前谢谢。

1 个答案:

答案 0 :(得分:4)

hasNextnext对单词进行迭代,您需要hasNextLinenextLine

对于包含分隔符的字段,我们必须查看数据集中的示例,以尝试查看是否存在我们可以定义的规则,其中显示split可以忽略分隔符。