当前位置: 首页 > 知识库问答 >
问题:

打开CSV - 在添加列时将一个 csv 文件复制到另一个

萧成文
2023-03-14

我正在尝试使用OpenCSV从一个CSV文件中读取。然后我想从输入csv中复制所有数据并将其输出到另一个csv文件,同时添加一个包含信息的新列。

public void run_streets_tsv( String tsvIn, String tsvOut) throws Exception
{

    CSVReader reader = null; 
    CSVWriter writer = null;

    try
    {

        reader = new CSVReader((new FileReader(tsvIn)));
        writer = new CSVWriter(new FileWriter(tsvOut), '\t');

        String element [] = null;
        List<String[]> a = new ArrayList<String[]>();

        while((element = reader.readNext()) != null){
            for(int i = 0; i<element.length; i++){
                a.add(i, element);
                //a.add("JSON");  need to add this json element at the end of each column 
            }
        }
        writer.writeAll(a);
    }
    catch(Exception e)
    {
        throw e;
        } 
    finally
    {
        reader.close();
        writer.close();
        }
    }

我正在尝试的另一种方法是这样的(改变while循环,所有其他代码保持不变):

        String element [] = null;
        while((element = reader.readNext()) != null){
            ArrayList list = new ArrayList(Arrays.asList(reader));
            list.add(element);
            list.add("JSON");
            writer.writeNext(element);
        }

这确实正确地打印了所有的行,但是它只是复制。我想添加额外的“JSON”列及其数据。

共有2个答案

司徒俊雄
2023-03-14

好吧,虽然我看到了一些错误,但你已经接近了。

”“读者。readNext()'以字符串数组的形式从输入返回一行,我们基本上需要为输出添加一个元素。

while((element = reader.readNext()) != null) {
    String[] output = getExpandedArray(element);
    a.add(output);
}

您需要实现getExpandedArray,我将开始它。

private String[] getExpandedArray(String[] input) {
    String[] output = null;
    //Populate/create output from input, but with the array 1 bigger. 
    output[output.length -1] = "JSON";
    return output;
}
邓子濯
2023-03-14

以下“放大”元素-Array一个,使您能够将某些内容放入新创建的最后一个索引中。然后保存该数组。

import java.util.Arrays;

    String element[] = null;
    while((element = reader.readNext()) != null){
        element = Arrays.copyOf(element, element.length + 1);
        element[element.length - 1] = "JSON";
        writer.writeNext(element);
    }
 类似资料:
  • 问题内容: 我正在用csv快速编写以下数据: 当我完成解析第一个文件并启动第二个文件时,我想添加更多列,如下所示: parsed STEP ID ELEMENT_ID Fatigue SW Fatigue F1 Fatigue F3 Fatigue SW Fatigue F1 Fatigue F3 Step 10 10000 1.30E-07 1.51E-06 2.15E-06 1.30E-07

  • 如何在JMeter中将一个csv文件循环到另一个csv文件,其中第一个csv文件包含所有登录数据,另一个csv文件包含交易数据。我应该运行1个出纳员应该处理30笔交易的地方。

  • 我有两个不同标题的csv。 假设CSV1有一、二、三、四个标题,我想创建一个有五、六、七、八个标题的csv。 我很难编写代码来打开第一个CSV,然后创建第二个CSV。 这是我目前掌握的代码。

  • 问题内容: 我有两个Java.io.File对象file1和file2。我想将内容从file1复制到file2。有没有一种标准的方法可以执行此操作,而无需创建必须读取文件1并写入文件2的方法 问题答案: 不,没有内置方法可以做到这一点。与您要完成的工作最接近的是from 的方法,如下所示: 并且不要忘记处理异常并在一个块中关闭所有内容。

  • 我有一个长长的列表,列表的形式如下--- i、 列表中的值有不同的类型——float、int、string。如何将其写入csv文件,使输出的csv文件看起来像

  • 问题内容: 我编写了一个Python脚本,用于合并两个csv文件,现在我想在最终的csv中添加标头。我尝试按照此处报告的建议进行操作,但出现以下错误:。解决此问题的最有效方法是什么? 这是我正在使用的代码: 问题答案: 该班预计 字典 的每一行。如果您只想编写一个初始标头,请使用常规并在标头的简单行中传递: 另一种方法是在跨数据复制时生成字典: