【问题标题】:Parsing tab delimited files with Super CSV使用 Super CSV 解析制表符分隔的文件
【发布时间】:2011-08-07 04:12:01
【问题描述】:

我正在尝试使用 Super CSV 解析一个 CSV 文件,该文件包含两个字段(制表符分隔)和一个不带引号的字符串。

occugroup_code occugroup_name 110000个管理职业 130000个商业和金融运营职业 150000 计算机和数学职业

我很难弄清楚如何配置 CsvPreference 以便能够为每两个返回一个 Map。有人遇到过这个问题吗?

【问题讨论】:

  • 您已经以任何方式尝试过,遇到异常或类似情况?
  • 仅供参考 Super CSV 2.0.0-beta-1 现已推出。它包括许多错误修复和新功能(包括 Maven 支持和用于映射嵌套属性和数组/集合的新 Dozer 扩展)。还有一个制表符分隔的偏好CsvPreference.TAB_PREFERENCE :)

标签: java csv supercsv


【解决方案1】:

下次请尝试自己做任何事情或更具体地描述您的问题。
例如:
I try the CsvPreference.xyz but it didn't work, because I get the exception abc


一些基本的东西:CSV = Comma-separated values
您的文件不是用逗号或分号分隔的,而是用制表符分隔的。 因此,您必须创建自己的 CsvPreference:
CsvPreference pref = new CsvPreference('\"', '\t', "\n");

这是完整的示例(经过测试):

InputStream inputStream = this.getClassLoader().getResourceAsStream("example.csv");
CsvPreference pref = new CsvPreference('\"', '\t', "\n");
ICsvMapReader reader = new CsvMapReader(new InputStreamReader(inputStream), pref);

List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> result;
while ((result = reader.read(new String[]{"code", "name"})) != null) {
    list.add(result);
}

for (Map<String, String> elem : list) {
    System.out.print(elem.get("code")+" | ");
    System.out.print(elem.get("name"));
    System.out.println();
}

输出:

110000 |管理职业
130000 |商业和金融运营职业
150000 |计算机和数学职业

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多