在解析csv时保留引号



我知道已经有一个与此相关的问题:如何在解析csv文件时保持引号?(但这是为c#)

假设我有一个csv文件,其值为:

12312414-DEF_234, "34-DE, 234-EG, 36354-EJ", 23
...

当我用OpenCSV解析它时,它不保留引号。

CSVReader reader = new CSVReader(new FileReader("../path.csv"), ',', '"');
List<String[]> list = reader.readAll();
String[][] csvArray = new String[list.size()][];
csvArray = list.toArray(csvArray);

因此,当我将所有的值存储到一个数组中时,当我试图打印这些值(用于检查)时,引号不在那里。

...
System.out.println(csvArray[i][j]);
// output below
// 34-DE, 234-EG, 36354-EJ

我怎样才能保留报价?原因是因为我要更改一些值,并且需要将其重新输出回csv

CSVReader必须解析并删除引号,否则您将不会得到一个值34-DE, 234-EG, 36354-EJ,而是三个值"34-DE, 234-EG36354-EJ"。因此,引号被删除是可以的。

CSVWriter应该为每个需要引用的值重新添加它们。

您是否尝试将数组写回CSV?值34-DE, 234-EG, 36354-EJ——实际上是任何包含逗号的值——应该加引号。

public static void readCSV(){
    String csvFile = "input.csv";
    BufferedReader br = null;
    String line = "";
    String splitter = ",";
    try {
        br = new BufferedReader(new FileReader(csvFile));
        while ((line = br.readLine()) != null) {
                // use comma as separator
            String[] words = line.split(splitter);
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新