【问题标题】:Keep quotes when parsing csv解析csv时保留引号
【发布时间】:2014-06-25 20:41:11
【问题描述】:

我知道已经有一个与此相关的问题:How to keep quotes when parsing csv file?(但它适用于 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。

【问题讨论】:

    标签: java csv opencsv


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,CSVWriter 确实将引号添加到以逗号分隔的所有值。但理想情况下,我希望将其保持与获得时相同的格式。仅表示第二列中的值 - 或者没关系,文件可以以相同的方式读取,所有文件都用引号括起来?跨度>
    • @B.V 因为 CSVWriter 将它们添加回来,我不明白为什么会重要
    【解决方案2】:
    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();
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 2020-12-13
      • 2020-07-02
      相关资源
      最近更新 更多