java - 使用 OpenCSV 从 CSV 中提取特定数字

标签 java csv opencsv aiml

我有带有标题和特定数字的 CSV 文件。我需要单独提取这些数字来创建 AIM XML 文件,但这并不重要。我很难尝试根据标题提取数字。我尝试了各种方法但无法使其发挥作用。当我尝试运行这段代码时(下面只是一个示例),它似乎永远不会终止。我对 Java 或 OpenCSV 不太有经验,所以请原谅您即将看到的困惑。 (现在也是凌晨 2 点,我的脑子出了故障)

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import edu.stanford.hakan.aim3api.base.AimException;
import edu.stanford.hakan.aim3api.base.ImageAnnotation;
import edu.stanford.hakan.aim3api.usage.AnnotationBuilder;
import au.com.bytecode.opencsv.CSVReader;



public class CreateAIMFile {
public static void main(String[] args) throws IOException, FileNotFoundException,     AimException
{
    ImageAnnotation PeserAnnotation1 = new ImageAnnotation ();
    String csvFilename = "C:/Users/Daniela/Documents/ISPY/205_4493_MR1_ACRIN_6657/E25008/peser_data.csv"; //Insert file name and location
    CSVReader csvReader = new CSVReader(new FileReader(csvFilename));
    String [] nextLine = csvReader.readNext();

    //start 
    for (int i = 0; i<50; i++){ //i<50 is a random number
        while (nextLine[i] != null){
            if (nextLine[i] == "CagridId") //customize name
            {
                CSVReader csvreader = new CSVReader(new FileReader(csvFilename), ';', '\'', 1);
                Integer A = Integer.valueOf(nextLine[i]);
                PeserAnnotation1.setCagridId(A); 
            }
            else
            {
            PeserAnnotation1.setCagridId(0); 
            }
        }
    }
    for (int i = 0; i<50; i++){ 
        while (nextLine[i] != null){
            if (nextLine[i] == "PatientComment") //customize name
            {
                CSVReader csvreader = new CSVReader(new FileReader(csvFilename), ';', '\'', 1);
                PeserAnnotation1.setComment(nextLine[i]); 
            }
        else
            {
                PeserAnnotation1.setComment("");
            }
        }
    }
AnnotationBuilder.saveToFile(PeserAnnotation1, "./AIMFileName.xml", "AIM_v3.xsd");     //customize name of XML file
    System.out.println(AnnotationBuilder.getAimXMLsaveResult());
}
}

最佳答案

通常,人们会通过实例化 CSVReader 对象来打开 CSV 文件一次,然后调用 readNext 循环访问该文件。

在您的代码中,您将在循环中重新实例化 CSVReader,而不是在循环中调用 readNext。

关于java - 使用 OpenCSV 从 CSV 中提取特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18249132/

相关文章:

python - 根据另一列拆分 csv 文件的一列

java - BeanToCsv不写入CSV文件

python - 索引错误 : list index out of range - python

java - Mockito 1.9.5 导致 NullPointerException

java - 如何使用匹配器替换一个网址中的2个不同的字符串?

java - libGDX Box2DDebugRenderer 绘制框太大和太小

java - 如何用前导零写入 csv?

java - 获取数组中选中的复选框数据

c# - 将 LINQ 用于 CSV 数据

java - openCSV 没有读取我的整个文件