首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Univocity CSV :解析后缺少引号

Univocity CSV :解析后缺少引号
EN

Stack Overflow用户
提问于 2017-10-11 12:53:31
回答 2查看 108关注 0票数 1

我尝试使用Univocity CSV解析带有引号的CSV,我发现在解析后,某些值中缺少右引号。

代码语言:javascript
复制
CSV:
ACCT,NAME,AGE,ADDRESS
700,GINI,23,"AB,ECITY-1"
800,HANNAH,30,"AB,ECITY-1"
900,IAN,40,"XYZ,ECITY-1"
1900,LYDIA,40,"XYZ,ECITY-1"

输出:

代码语言:javascript
复制
[GINI, "AB,ECITY-1]
[HANNAH, "AB,ECITY-1]
[IAN, "XYZ,ECITY-1]
[LYDIA, "XYZ,ECITY-1]



CsvParserSettings settings = new CsvParserSettings();
settings.getFormat().setLineSeparator("\n");
settings.setKeepQuotes(true);
settings.setQuoteDetectionEnabled(false);
settings.trimValues(true);
settings.excludeFields(excludeHeaders.split("ACCT,AGE"));
CsvParser baseFileParser = new CsvParser(settings);
String[] baseRow;
baseFileParser.beginParsing(baseFile);
while((baseRow = baseFileParser.parseNext())!= null){
        System.out.println(Arrays.toString(baseRow));
}

我错过了什么。为什么输出中缺少右引号?

EN

回答 2

Stack Overflow用户

发布于 2017-10-11 13:20:49

找到答案myslef..我不得不删除下面这行

代码语言:javascript
复制
settings.getFormat().setLineSeparator("\n");

如果删除上面的行,代码就可以正常工作

票数 1
EN

Stack Overflow用户

发布于 2017-10-19 10:02:47

您使用的是2.5.8版吗?如果不是,那么这看起来与我最近修复的a bug有关。只需更新它,它就会工作。

一个小小的解释:

在您的例子中,如果您设置了settings.getFormat().setLineSeparator("\n");,但是输入文件使用\r\n作为分隔符,那么bug就会显露出来。\r将由解析器作为空格处理,并触发错误。

这就是为什么删除settings.getFormat().setLineSeparator("\n");对你有用--如果你在Windows上,解析器使用的默认行分隔符将是\r\n。这将避免错误,因为在行结束之前没有尾随空格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46680103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档