1

我需要将文本文件拆分为各个字段。但是,我可以控制值的划分方式,因为每个值中偶尔会有逗号,所以我不能使用 CSV。导入文件的最佳方法是什么?TAB 会是更好的分隔符吗?

问题在于 Lippincott, Williams & Wilkins。这就是一个领域。

示例数据

教育史季刊,1748-5959,na,Wiley-Blackwell, 政治经济学史,1527-1919,0018-2702,杜克大学出版社, 政治经济学史 - 年度增刊,na,missing, 历史教师,0018-2745 ,0018-2745,历史教育协会, History Today,na,0018-2753,History Today Limited, Home Healthcare Nurse,na,0884-741X,Lippincott, Williams & Wilkins, Hospitality Law,na,0889-5414,LRP出版物, Hudson Review,na,0018-702X,Hudson Review Incorporated, Humanist - DC,na,0018-7399,American Humanist Associatioin, Idealistic Studies,na,0894-5373,F&W Media,

4

2 回答 2

2

与其对分隔符进行硬编码,不如将其设为可配置参数,然后如果输入发生变化或类似情况,您可以轻松适应而无需重写。

如果这不是一个选项,TAB或者|在不知道输入是什么的情况下看起来是合理的选项

于 2013-09-16T14:28:04.320 回答
2

您选择任何分隔符,它会破坏您的数据值有它们的那一天。那么,为什么不采用一个 CSV 库,它可以确保分隔符在需要时被转义并轻松读取它们。

以下是使用OpenCSV的方法

 String[] values = {"one", "two,three", "four , five"};
 CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"));
 writer.writeNext(values);
 writer.close();

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
String [] entries;
// reading just the first line
if ((entries = reader.readNext()) != null) {
    System.out.println(entries[0] + ", " + entries[1] + ", " + entries[2]);
}
reader.close();

如果需要,您实际上可以将任何自定义分隔符与 OpenCSV 一起使用,例如 Tab \t

 CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), '\t');

但是使用 CSV 可以使您的数据文件与许多其他工具兼容。因此,这完全取决于您对数据文件的兼容性要求(如果有)。

于 2013-09-16T14:35:40.707 回答