我需要将一个文本文件分割成不同的字段。但是,我可以控制值的划分方式,因为每个值中偶尔都有逗号,所以我不能使用CSV。导入文件的最佳方法是什么?TAB是一个更好的分隔符吗?
问题在利平科特,威廉斯和威尔金斯。那只是一个领域。
示例数据
“教育史季刊”,1748-5959,na,Wiley-Blackwell,“政治经济史”,1527-1919,0018-2702,杜克大学出版社,政治经济史-年度补编,na,失踪,历史教师,0018-2745,历史教育学会,今天历史,na,0018-2753,历史今日有限公司,家庭保健护士,na,0884-741 X,Lippincott,Williams & Wilkins,Hospitality Law,na,0889-5414,LRP出版物,Hudson Review,na,0018-702X,Hudson Review Limited,Humanist - DC,007318-99,美国人文主义者,理想主义者,na,na,0894-5373,F&W Media,
发布于 2013-09-16 14:28:04
与其硬编码分隔符,为什么不让它成为一个可配置的参数,那么如果输入发生变化或类似的情况,您可以轻松地适应,而不必重写。
如果这不是一个选项,TAB或|似乎是合理的选择,而不知道输入是什么
发布于 2013-09-16 14:35:40
您选择任何分隔符,它都会在数据值中的某一天中断。那么,为什么不采用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也可以使您的数据文件与许多其他工具兼容。因此,这完全取决于您对数据文件(如果有的话)的兼容性要求。
https://stackoverflow.com/questions/18830297
复制相似问题